「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
音声処理について纏める。
音声合成 †
- 音声認識の逆プロセス。
- 文章から自然な音声を生成する(text to speach)
音声認識 †
音声データを解析して、何を発音しているのかを判別
精度測定 †
- 文字誤り率(CER)
- 単語誤り率(WER):コチラが一般的な評価尺度
プロセス †
音声 → 音素 → 文字列 → 単語 → 単語列
- プロセス1
- 雑音・残響抑圧 (入力:音声 出力:音声)
- 音声を認識したい対象以外の雑音を分離する
- プロセス2
- 音素状態認識 (入力:音声 出力:音素)
- 音声の周波数スペクトル,すなわち音響特徴量を
インプットとして,音素状態のカテゴリに分類する
- プロセス3
- 音素モデル (入力:音素 出力:文字列)
- 音素がどの文字であるかを推定する
- プロセス4
- 単語辞書 (入力:文字列 出力:単語)
- 認識した文字列から単語を特定し認識する
- プロセス5
- 言語モデル (入力:単語 出力:単語列)
- 単語系列仮説の尤度を評価する
- プロセス1~5
プロセス1~5を纏めて,すなわち,
とする学習手法のことをEnd-to-End音声認識と呼ぶ。
詳細(音声合成) †
- 従来:波形接続型音声合成と統計的パラメトリック音声合成
- WaveNet?:深層学習を用い既存の音声合成モデルより自然な音声を合成できる。
体系 †
波形接続型音声合成 †
- あらかじめ録音された音声を分解し、その素片を連結して音声を合成する手法。
- 録音されたテキストに近い文章が入力なら自然な音声で文章が読みあげらる。
- 問題点
- 発話速度や抑揚が多少変更できる程度
- 急激な抑揚や感情を加えることが難しい(機械っぽさが残る)
- 録音されている音声以外で読みあげることができない。
統計的パラメトリック音声合成 †
- 生の音声を入力しその音声を学習したモデルを構築
- 生成モデルの出力をもとに音声を合成する手法。
- モデルへの入力(男性女性・言語指定等)を変えれば多様な音声で読みあげ可能
深層学習を用いた音声合成(WaveNet?) †
- データの前処理
- 音声データ取得
- 無音区間の除去
- 正規化
- μ-law量子化
- paddingとtrimming
- モデルの構築
過去のデータ入力にRNNやLSTMではなく畳み込み層を用いる。
- Causal Convolution
- 通常のCovolutionでは将来の時間ステップ xt+1,xt+2,... までも畳み込んでしまう。
- Causal Covolutionは過去の時間ステップ x1,x2,...,xt−1 のみを畳み込むよう設計されている。
- WaveNet?ではこれをさらに改良したDilated Causal Convolutionを用いる(Causal Convolutionは使わない)
- Dilated Causal Convolution
Dilated Causal Convolutionは過去の入力データをできるだけ多く畳み込めるよう設計された畳み込み層。
- 音声データの典型的なサンプリング周波数16kHzで
1秒間の依存関係は16000サンプル間の依存関係に相当。
- これほど長い系列信号を自己回帰モデルで扱うのは極めて難しい。
- 層が深くなるにつれて、畳み込むノード(=Dilation)を離した結果、
入力できる過去のサンプル数を指数関数的に増やすことが可能になった。
- Gated Activation Unit
Dilated Causal Convolutionの出力に活性化関数のtanhとsigmoidの2つを適用しかけ合わせる。
- Residual Block
- Dilated Causal Convolution + Gated Activation Unit から構成される。
- ResNetの構造をWaveNet?にも適用、層の入力を参照した残差関数を学習する。
- Residual Net
次のResidual block への入力は一個前のResidual blockの出力とそれに使われた入力が足し合わされたものになる。
活用例 †
アナウンス、ナレーション †
ナビゲーション / トレーニング・システム †
詳細(音声認識) †
体系 †
HMM → DNNで、音声認識の性能向上。
音声分析 †
- 音声から必要な特徴量を抽出する処理
- フォルマント:音声の複数の周波数のピーク
- ケプストラム:周波数スペクトルをフーリエ変換して得る。
- アナログデジタル変換
アナログな連続値を離散的なデジタル値に変換する。
- 高域強調
- 人間は高域の音を小さく感じる。
- 補償で一般に1オクターブ上がる毎に6dB大きくする。
- 音声フレーム
- 時系列音声分析をするとき、一定の時間感覚で特徴量を抽出
- 切り出す間隔をフレーム周期や窓長
- 切り出された分析の対象を音声フレーム
- 窓関数をかけることで両端を滑らかにしつつ切り出す。
- 特徴量の抽出
音声フレームの信号は定常であると仮定して、
それに対して高域強調を施した時系列信号を形成します。
- 特徴量
- 音声信号スペクトル:
声の高さを表す(使用しない特徴量)。
- スペクトル包絡:
音声の音色の違いを表す(音声認識で使用する特徴量)。
- メル周波数ケプストラム係数(MFCC):
音色・楽器音の音色の違いを表す(音声認識、音楽ジャンル認識で使用する特徴量)。
- 高速フーリエ変換
音声波形から周波数スペクトログラムを得る。
- サンプリング周波数をS、窓長をNとしたとき、周波数分解能は S / N
- 周波数レンジ = サンプリング周波数 / 2
- 周波数情報が得られる等分点の数 = (サンプリング点数 / 2) + 1
- メル尺度:音高の知覚尺度
- 周波数による音の変化は低い場合に敏感で高い場合に鈍感
- 周波数域が低いと分解能が高く、高いと分解能が低い。
- 定義にはファントの式がよく用いられる(グラフ参照)
- 1000melの音高の上昇は低周波では2000Hz、高周波では4000Hzの上昇で知覚される。
HMM(隠れマルコフモデル) †
ベイズ統計のHMM(隠れマルコフモデル)を使う。
- 1つの単語クラスに1つの音響モデル(HMM)を与える。
- 単語クラスが未知であるデータXが与えられた場合、
単語クラスに与えられた音響モデル(HMM)から、
データXがどれぐらいの確率で出ててくるか?求める。
- 確率が一番大きいものをデータXの単語クラスとして選ぶ(認識)
- 連続音声認識
- 音響モデルではなく言語モデルを考える。
- 前述の「単語」でやったことを「単語列」でやる。
- 音素レベルの誤りを認めた上で、文として成立する単語列に変換する。
- 観測データに対し、音響モデルと言語モデルの積を
最大化する単語系列を組み合わせ最適化によって求める。
- 音響モデル:Left-to-Right HMM(隠れマルコフモデル)
- 言語モデル:N-gram LM(マルコフモデル)
- 以下の組合せ最適化(一体化したサーチの問題)
↓ ↓ ↓ 音声パターン ↓ ↓ ↓ |
音響モデル | ← | 音声コーパス |
辞書 | ← | 音声規則+テキスト・コーパス |
↓ ↓ ↓ 単語、連続音声 ↓ ↓ ↓ |
言語モデル | ← | テキスト・コーパス |
↓ ↓ ↓ 単語列(文) ↓ ↓ ↓ |
- サブワードモデル
- サブワード:単語より短い音素、音節
- 単語はサブワードの連結により構成する。
- CTC、LAS、Speech Transformer、Conformer、CMLM(?)
- Connectionist Temporal Classification (CTC)
- 入力(Heello、Helloo)が音素数と一致しない問題を解決して出力(Hello)
- RNNの音声認識などの知覚タスクには不向きな問題を解決し、LSTMやRNNと組み合わせて使用される。
- 与えられた入力配列を条件として可能な全てのラベル配列に対する確率分布として解釈するネットワーク。
- ネットワークの出力をラベルシーケンスの条件付き確率分布に変換する点が重要。
- LAS
- Encoder, DecoderにLSTMが用いられる。
- Attention based Encoder-Decoderとほとんど同じ。
- RNN-Transducer
CTCにおける「条件付独立性」を排除するため前の出力の文字を入力に加える。
- Speech Transformer
Transformerが出たことで、DNN-HMMも凌駕するようになって、一段と注目度が上がった
- Conformer
TransformerとCNNを組み合わせたモデル
- Conditional Masked Language Model(CMLM)
活用例 †
自動音声口述筆記 †
- 会話音声書面記録
- コミュニケーション支援(問診など
エンリッチメント系 †
音声アノテーション
- 音そのものに対するタグ付け
- 音声が示す意味に対するタグ付け
参考 †
Qiita †
ライブラリ †
オープンソース †
プロダクト †
サービス †
Google Cloud Speech API †
Bing Speech API †
Speech to Text †
ソリューション †
AmiVoice? †
Voice-Series †