DNSMOSで音声評価を行う

初めに

AI声づくり技術研究会 アドカレ 12日目です。

今回は 音声合成におけるデータセット作成の一つの重要な要素である データセットの音声評価について 比較的新しめの評価手法およびライブラリを触っていきます。 今回触っていくのは、 DNSMOSという マイクロソフトが開発したものになっています。

過去にいくつかの音声データの評価についてのライブラリを触った記事を書いているので、ほかのライブラリも気になる場合はご覧ください。

ayousanz.hatenadiary.jp

ayousanz.hatenadiary.jp

ayousanz.hatenadiary.jp

以下にて今回の記事の内容をそのまま公開したリポジトリがあります。音声ファイルは各自でダウンロードして配置してください

github.com

開発環境

DNSMOSについて

DNSMOSは、ノイズ抑制アルゴリズムの性能を評価するための非侵襲的な音声品質評価指標です。人間の主観的評価(MOSスコア)と高い相関を持つよう設計されており、参照となるクリーンな音声が不要で、実際の録音環境での評価が可能です。これにより、ノイズ抑制の効果を客観的かつ効率的に測定できます。

環境構築

git clone https://github.com/ayutaz/dnsmos.git
cd dnsmos
uv sync

音声ファイルの評価

任意の音声を評価することができます

今回は、つくよみちゃんコーパス│声優統計コーパス(JVSコーパス準拠)を使って評価を行います。

tyc.rei-yumesaki.net

また 公式からモデルを取得・配置します

以下のような配置を行います (記事で使用しているリポジトリには モデルは含まれています)

dnsmos/
├── .venv/
├── DNSMOS/
│   ├── model_v8.onnx
│   └── sig_bak_ovr.onnx
├── test(音声ファイル)
├── .gitignore
├── .python-version
├── dnsmos_local.py
├── LICENSE
├── pyproject.toml
├── README.md
├── sample.csv
└── uv.lock

音声とモデルを配置してから音声評価処理を実行します

python .\dnsmos_local.py -t .\test\ -o sample.csv 

もしくは

uv run .\dnsmos_local.py -t .\test\ -o sample.csv 

引数の -t でフォルダパスの指定、-o で出力する評価データ名を指定します。

また -pをつけることで、干渉話者(周囲の話者やバックグラウンドの音声)がいる場合に、それらの影響をペナルティとして反映させることができます。音声内で話しているメインの話者以外が入っている場合にスコアが低くなります。

実行結果は以下のようになります