初めに
音声合成の技術によってどの声が本物なのか、許可されたものかのかが分からくなってきます。そこで音声に透かしなどの技術が出てきていますが、その中のPerthを試してみます
開発環境
環境構築
まずはライブラリを動かす環境を構築します
uv venv -p 3.12 .\.venv\Scripts\activate
次に必要なライブラリをインストールします
uv pip install numpy librosa soundfile torch torchaudio matplotlib pyyaml uv pip install resemble-perth
透かしを入れる
ReadMeに記載があるサンプルコードで動かしていきます
import perth import librosa import soundfile as sf # Load audio file wav, sr = librosa.load("input.wav", sr=None) # Initialize watermarker watermarker = perth.PerthImplicitWatermarker() # Apply watermark watermarked_audio = watermarker.apply_watermark(wav, watermark=None, sample_rate=sr) # Save watermarked audio sf.write("output.wav", watermarked_audio, sr)
こちらを実行することで 音声ファイルに透かしが入ります
こちらを実行すると透かしが入ったファイルが生成されます
透かしの判定
以下にて透かしが入っているかどうかを判定することができます
import perth import librosa # Load the watermarked audio watermarked_audio, sr = librosa.load("VOICEACTRESS100_001.wav", sr=None) # Initialize watermarker (same as used for embedding) watermarker = perth.PerthImplicitWatermarker() # Extract watermark watermark = watermarker.get_watermark(watermarked_audio, sample_rate=sr) print(f"Extracted watermark: {watermark}")
実行することで以下のような結果が返ってきます、透かしが入っている場合は1.0が返ってきます
loaded PerthNet (Implicit) at step 250,000 Extracted watermark: 1.0