VAD
Voice Activity Detection(音声区間検出) / ブイエーディー
音声の中で人が話している区間と、無音や雑音、BGMだけの区間を見分ける技術です。音声認識や話者分離の前処理として発話区間を切り出すほか、字幕の表示タイミングの候補作りや無音部分のカット編集に使われます。
- 正式名称
- Voice Activity Detection(音声区間検出)
- 出力
- 発話区間の開始時刻と終了時刻、またはフレームごとの発話らしさ
- 主な手法
- 音量やゼロ交差数による判定、統計モデル(GMMなど)、ニューラルネットワーク
- 主な調整値
- 判定のしきい値、最短の発話長、最短の無音長、区間の前後に足す余白
- 一般に知られる実装の例
- WebRTC VAD、Silero VAD、pyannote.audio
長い音声を音声認識にかけたら、無音の区間に存在しない文章が出てきた。このようなトラブルの多くは、VADで話している区間だけを切り出してから認識にかけると減らせます。VADは、音声のどこで人が話しているかを判定するだけの小さな処理ですが、後に続く処理の精度を左右します。
VADの現場での使われ方
もっとも多いのは、音声認識の前処理です。1時間の番組音声をそのまま認識にかけるのではなく、VADで発話区間を切り出し、区間ごとに認識します。無音やBGMだけの区間を認識にかけないことで処理時間が短くなり、何も話していない区間に文章を出してしまう誤りも減ります。話者分離でも、最初の段階で発話区間を切り出すのにVADが使われます。
字幕制作では、発話区間の開始と終了の時刻が、字幕を出すタイミングと消すタイミングの候補になります。人が波形を見ながら字幕のタイミングを打つ作業の下書きを、VADで作る使い方です。
編集では、動画の無音部分を自動で詰めるカット編集にも使われます。講義やインタビューの素材で、言葉の間の長い沈黙を取り除くときに、音量だけで判定するより、声の有無で判定したほうが自然に切れます。Web会議や通話の分野では、話していない間の送信を止めて通信量を減らす目的でも使われています。
VADの仕組み
もっとも単純な方法は、音量が一定以上の区間を発話とみなすものです。静かな収録なら十分に機能しますが、BGMや空調の音があると使えません。WebRTCに含まれるVADは統計モデルで声らしさを判定する方式で、10〜30ミリ秒の短いフレームごとに発話かどうかを返します。Silero VADのようなニューラルネットワークの方式は、雑音やBGMの中でも声を見分けやすくなっています。
実際の運用では、フレームごとの判定をそのまま使わず、次のような調整値でならしてから区間にします。
- しきい値: どれくらい声らしければ発話とみなすか
- 最短の発話長: これより短い発話は捨てる
- 最短の無音長: これより短い沈黙では区間を切らない
- 余白: 区間の前後に少し足して、語頭や語尾を切らないようにする
VADで間違えやすい点とトラブル
多いのは、語頭や語尾が切れるトラブルです。「はい」のような短い返事や、声が小さくなる語尾は発話と判定されにくく、区間から漏れます。区間の前後に余白を足す、最短の発話長を短くするといった調整で防ぎます。
BGMや歌の扱いも迷いやすい点です。歌声は声として判定されることが多く、バラエティ番組の効果音や笑い声も発話と間違えられることがあります。逆に、BGMが大きい場面ではナレーションを見落とすこともあります。番組の種類ごとにしきい値を試して決めるのが確実です。
無音の検出を別の目的に使う場面もあります。解説放送の制作では、台詞の隙間がどこに何秒あるかが解説を入れる余地になるので、発話区間の裏返しとしての無音区間の一覧が役に立ちます。
よくある質問
VADとは何の略ですか
Voice Activity Detectionの略で、日本語では音声区間検出や発話区間検出と呼ばれます。音声の中で人が話している区間を見つける技術です。
VADとノイズゲートの違いは何ですか
ノイズゲートは音量だけを見て、小さい音を絞る音響処理です。VADは声らしさを判定するので、大きな物音を声と区別できる点が違います。ノイズゲートは音を加工し、VADは区間の情報を返すという違いもあります。
VADのしきい値はどう決めればいいですか
実際の素材を数分選び、人が付けた発話区間と比べながら調整します。語頭や語尾が切れるならしきい値を下げるか余白を足し、雑音を拾いすぎるならしきい値を上げます。
似ている形式との違い
関連する用語
最終更新