「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
音声処理について纏める。
音声認識とは? †
- 音声は、波形・スペクトルの系列データ。
- ウィンドウをズラして行って特徴ベクトル列を求める。
- コレを計算機で処理して、
音素 → かな → 単語 → 文 → コマンドと処理。
- 音声認識は「かな」→「単語」まで。
- 文コマンドはバックエンドシステム。
音声認識の難しさ †
系列の対応付け †
複雑な長さが異なる系列の対応付け
(フレーム、音素、音節、単語)
- 系列長が極端に異なる。
- 非線形な時間短縮
- セグメント境界が曖昧
音響的特徴 †
- 時間分散して埋め込まれる。
- 文脈依存(音響的特徴と聞こえの関係が多対多)
- 同じ音響的特徴の音が、文脈に応じて違う音に聞こえる。
- 違う音響的特徴の音が、文脈に応じて同じ音に聞こえる。
- 物理的にない音を与えたり、物理的にある音を削ったり。
処理方法 †
新・旧、2つの方法があるが根幹をなす考え方は普遍的。
生成モデル(旧) †
ベイズ統計のHMM(隠れマルコフモデル)を使う。
識別モデル(新) †
深層学習のDNN(ディープ・ニューラルネットワーク)を使う。
ライブラリ †
以下の様なものが発見できた。
オープンソース †
Julius †
プロダクト †
Nuance †
メディアドライブ †
ライブラリ > SDK
サービス †
ソリューション †
AIの活用 †
音声データを解析して、何を発音しているのかを判別
音声合成 †
音声認識の逆プロセス。
音声認識 †
音声 → 音素 → 文字列 → 単語 → 単語列
プロセス1 †
- 雑音・残響抑圧 (入力:音声 出力:音声)
- 音声を認識したい対象以外の雑音を分離する
プロセス2 †
- 音素状態認識 (入力:音声 出力:音素)
- 音声の周波数スペクトル,すなわち音響特徴量を
インプットとして,音素状態のカテゴリに分類する
プロセス3 †
- 音素モデル (入力:音素 出力:文字列)
- 音素がどの文字であるかを推定する
プロセス4 †
- 単語辞書 (入力:文字列 出力:単語)
- 認識した文字列から単語を特定し認識する
プロセス5 †
- 言語モデル (入力:単語 出力:単語列)
- 単語系列仮説の尤度を評価する
プロセス1~5 †
プロセス1~5を纏めて,すなわち,
とする学習手法のことをEnd-to-End音声認識と呼ぶ。
体系 †
HMM → DNNで、音声合成、音声認識の性能向上。
HMM(隠れマルコフモデル) †
ベイズ統計のHMM(隠れマルコフモデル)を使う。
- 1つの単語クラスに1つの音響モデル(HMM)を与える。
- 単語クラスが未知であるデータXが与えられた場合、
単語クラスに与えられた音響モデル(HMM)から、
データXがどれぐらいの確率で出ててくるか?求める。
- 確率が一番大きいものをデータXの単語クラスとして選ぶ(認識)
- 連続音声認識
- 音響モデルではなく言語モデルを考える。
- 前述の「単語」でやったことを「単語列」でやる。
- 音素レベルの誤りを認めた上で、文として成立する単語列に変換する。
- 観測データに対し、音響モデルと言語モデルの積を
最大化する単語系列を組み合わせ最適化によって求める。
- 音響モデル:Left-to-Right HMM(隠れマルコフモデル)
- 言語モデル:N-gram(マルコフモデル)
- 以下の組合せ最適化(一体化したサーチの問題)
↓ ↓ ↓ 音声パターン ↓ ↓ ↓ |
音響モデル | ← | 音声コーパス |
辞書 | ← | 音声規則+テキスト・コーパス |
↓ ↓ ↓ 単語、連続音声 ↓ ↓ ↓ |
言語モデル | ← | テキスト・コーパス |
↓ ↓ ↓ 単語列(文) ↓ ↓ ↓ |
- サブワードモデル
- サブワード:単語より短い音素、音節
- 単語はサブワードの連結により構成する。
- CTC、LAS、Speech Transformer、Conformer、CMLM(?)
活用例 †
自動音声口述筆記 †
- 会話音声書面記録
- コミュニケーション支援(問診など
エンリッチメント系 †
音声アノテーション
- 音そのものに対するタグ付け
- 音声が示す意味に対するタグ付け
ライブラリ †
オープンソース †
プロダクト †
サービス †
Google Cloud Speech API †
Bing Speech API †
Speech to Text †
ソリューション †
AmiVoice? †
Voice-Series †
参考 †