音声区間検出とは?

Potokチーム更新日 ~1 分で読めます

音声区間検出とは、録音のうち話し声を含む部分を見つけて、無音や雑音を飛ばす処理です。検出器は短いフレームごとに、音声かそうでないかのラベルを付けます。音声の区間は次の工程へ渡され、間は捨てられるか無視されます。

録音を文字起こしする

音声メッセージ、音声、動画を Telegram の @potok_now_bot に送ると、チャットにテキストが返ってきます。

Telegram で @potok_now_bot を開く

2 GB までのファイル · TXT、MD、DOCX、PDF、SRT、VTT で書き出し · 話者ラベルとタイムスタンプ · 約30言語

要点

  • 単純な検出器はフレームの音量をしきい値と比べ、より強力なものは音声とその他の音を見分ける学習済みモデルを使います。
  • 無音を取り除くと、認識器が何分もの空の部屋を読まずに済むため、処理の時間と費用を節約できます。
  • 音声の検出は各フレーズのおおよその開始と終了の時刻も与え、後の工程が字幕の単位に再利用できます。
  • 誤りは二方向に出ます。フレーズの冒頭の小さな言葉が切れるか、咳や音楽の部分が音声として扱われます。
  • 静かなスタジオのファイルで動く検出器も、騒がしい街中では、雑音が声と同じ大きさなので失敗することがあります。

見た目のイメージ

// list silent gaps longer than half a second
ffmpeg -i call.wav -af silencedetect=noise=-30dB:d=0.5 -f null -
//   silence_start: 12.4
//   silence_end: 15.9 | silence_duration: 3.5
//   silence_start: 41.0
// the stretches between these gaps are the speech segments

関連情報

対応言語の一覧、ツール、用語集もご覧ください。

よくある質問

文字起こしの前に音声を検出するのはなぜですか?

無音と雑音を取り除き、認識器が音声だけを処理できるようにするためです。間に言葉が作り出される可能性が下がります。

VADはノイズ低減と同じですか?

いいえ。検出はどの部分を残すかを決めます。ノイズ低減は部分の中の音を変えます。両方を併用できます。

VADは文の冒頭を切ってしまうことがありますか?

はい、話者が小さな声で始めるときです。優れたシステムは、最初の音が切れないよう各区間に短い余白を加えます。

Potok に送る前に無音を切る必要はありますか?

いいえ。録音全体をそのまま2 GBまで送ってください。切り詰めは、非常に大きなファイルを小さくするときだけ役立ちます。

ファイルの無音の区間を見つけるには?

ffmpegのsilencedetectフィルターを使います。選んだしきい値に対して、静かな区間ごとの開始と終了を出力します。

出典

各出典は、記載の日付に手作業で開いて確認しました。ページは変更されることがあるため、細部が重要な場合は出典をご確認ください。

  1. Voice activity detection (Wikipedia), Wikipedia · 確認日
  2. Background noise (Wikipedia), Wikipedia · 確認日

お手持ちの録音で試してみましょう

音声メッセージ、音声、動画を Telegram の @potok_now_bot に送ると、チャットにテキストが返ってきます。

Telegram で @potok_now_bot を開く