【記事更新】私のブックマーク「音声認識システム」


私のブックマーク

音声認識システム

高島 遼一(神戸大学)

はじめに

音声認識といえば最近ではSiri やGoogle Home,Amazon Echo などのアプリケーションでなじみ深いものになっています.音声アシスタントのほかにはカーナビゲーションシステムや,Google 翻訳,VoiceTra といった音声翻訳アプリで利用している方も多いと思います.音声認識システムが身近なものとなった背景には,Deep NeuralNetwork(DNN)の登場による性能の飛躍的向上があります.近年では,大量のデータとDNN を駆使することで機械による音声認識性能が人間と同等レベルに達したという報告もあります[1][2].機械による音声認識の誤り率が,人間が聞き違いをする割合と同程度になったということです.ここでは,新たに音声認識システムを使ってみたい,構築・研究してみたい,という方を対象に,主要な論文やツール,データセットなどを紹介します.

[1] Xiong, W., et al.: The Microsoft 2017 conversational speech recognition system, ICASSP 2018(2018)
[2] Saon, G., et al.: English conversational telephone speech recognition by humans and machines, Interspeech 2017(2017)

音声認識システムの仕組みと代表手法

ここでは,次章のツール紹介のために必要な用語の説明として,音声認識システムの仕組みと代表的な手法の概要を説明します.詳細な解説については,参考文献[3][4][5][6][7]を参照ください.音声認識は音声信号を文字に変換する技術のことですが,狭義には音声信号を入力として単語列を推定するということになります.一般的には,この処理は以下にあげられる複数のモジュールが組み合わさることで行われます.

  • 特徴量抽出
    音声波形から音声認識モデルに入力するための特徴量を抽出します.音声波形に対して5 ~ 20 ミリ秒ごとに短時間周波数分析を行うことで,音声スペクトルの系列を得ます.この音声スペクトルをベースに,音声認識に適した特徴量の抽出処理を行います.代表的な特徴量として,対数メルフィルタバンク特徴やMFCC [8]があります.これらは人間の聴覚や声道の物理モデルを想定して設計されたものですが,近年ではDNN によって特徴量を抽出する試みもされています[9]
  • 音響モデル
    音素系列から音声特徴量が生成される確率を計算するモジュールです.音素とは,/a/, /i/ といった母音,/k/,/s/ といった子音から構成される音韻の最小単位です.1980 年代から2010 年頃までの長い間,音響モデルはGMM-HMM と呼ばれるモデルを用いて表現する手法が主流でした.この手法では,音声の時間変化を隠れマルコフモデル(Hidden Markov Model:HMM)と呼ばれる状態遷移モデルでモデル化します.そしてHMM の各状態における音声の生成確率は混合正規分布(Gaussian Mixture Model:GMM)でモデル化されます.2010 年頃からDNN が音声認識に使われだし,GMM-HMM から性能が大きく向上しました.代表的な手法はDNN-HMM と呼ばれるもので,GMM-HMM において混合正規分布で表現されていた各状態の出力確率を,DNN によって計算するというものです[10].DNN-HMM は現在製品として実用されている深層学習ベースの音声認識としては主流であり,現在もさらなる改良に向けて研究がされています.
  • 発話辞書
    各単語の読みを音素の並びで定義した辞書です(例:挨拶 /a/i/s/a/ts/u/).音響モデルが音声と音素の関係をモデル化したものであるのに対して,発話辞書は音素と単語の関係をモデル化しています.
    読みが複数定義されている場合(例:今日 /ky/o:/,今日 /k/o/N/n/i/ch/i/)は,それぞれが辞書にエントリーされます.音響モデルと同様に発話辞書も,単語から音素系列が生成される確率として表現されます.読みが1種類の場合,エントリーされている音素系列の確率は1.0 となります.読みが複数存在する単語は,各読みの音素系列の確率を1.0 とする(つまり,表記は同じで読みが異なる単語は別単語とみなす)場合や,学習データ中に存在する読みの頻度から確率を計算する場合もあります.
  • 言語モデル
    ある単語に対して,その単語が出現する事前確率を計算するモジュールです.代表的なモデルはN-gram というもので,これはN-1 個の単語系列を観測したときに,次にどの単語が出現しやすいかを離散確率化したモデルです.1-gram の場合は,単純に各単語の出現頻度に相当し,3-gram の場合は,例えば「/ 音声/ 認識/」の次に出現する単語の頻度に相当します.N の数が多いほど長い文脈を考慮した正確なモデルになりますが,モデルの規模が指数的に増大することになります.
    近年では言語モデルをRNN で表現することで,N-gram よりも長い文脈を効率良く扱えるようにする研究もされています[11]

一般的な音声認識システムでは,上記の音響モデル,発話辞書,言語モデルを結合させることで,音声特徴量 →音素→単語→単語系列(文章)というように,連鎖的に確率を計算しながら音声認識を行います.
一方,近年では音響モデル,発話辞書,言語モデルを一つのDNN によって表現するEnd-to-End モデルの研究がホットトピックとなっています.End-to-End モデルの代表的な手法を以下にあげます.

  • Connectionist Temporal Classification(CTC)[12]
    音声認識の難しい点として,入力(音声特徴量系列)と出力(テキスト系列)の系列長が異なる点があげられます.異なる系列長のマッピングを行うため,従来はHMM と併用する形でDNN を利用していました(DNNHMM).CTC は,HMM を使わずに異なる系列長のマッピングを行うために提案されました.CTC では,音声認識のラベル(音素や文字,単語など)に,新たに「ブランク」(ラベルなし,‘ – ’)というラベルを追加します.そしてDNN によってフレームごとに推定されたラベル系列に対して,繰り返された同一ラベルとブランクを削除することにより,テキスト系列へとマッピングします(例:フレームごとのDNN 出力a a – b – – がa b へマッピングされる).また学習の際は,HMM でも使われる前向き・後ろ向きアルゴリズムを用いて,あらゆるアライメントを考慮したうえで正解テキスト系列の確率が最大となるようにDNN を学習させます.
  • Attention Encoder-Decoder [13][14]
    テキスト翻訳や対話などのタスクで使われているAttention Encoder-Decoder モデルを音声認識に応用したモデルです.入力の音声特徴量系列から潜在的な特徴量へ変換するエンコーダネットワークと,エンコード特徴量からテキスト系列へ変換するデコーダネットワークによって構成されます.また,エンコーダとネットワークの間にはAttention 機構が入っており,ここではデコードの際にどの時刻のエンコード特徴量を参照するかを重み付けしています.テキスト処理のタスクと異なり,音声認識タスクでは音声特徴量系列が出力に対して非常に長いため,時間方向の集約や間引きの処理がエンコーダネットワークに入っています.
  • Transformer [15]
    こちらもテキスト処理で使われているTransformer を音声認識に応用したモデルです.Attention Encoder-Decoder と同様に,エンコーダネットワークとデコーダネットワーク,Attention 機構によって構成されていますが,Attention Encoder-Decoder は各ネットワークがRNN で構成されているのに対して,Transformer ではmulti-head self-attention を用いることでRNN を用いずに系列情報を表現している点が異なります.また,ここでも音声特徴量系列の長さを集約するため,時間方向のCNN がエンコーダネットワークに入っています.
  • CTC-Seq2Seq Hybrid
    CTC はRNN やLSTM によって入力系列から出力系列へと変換しているため,入力系列のコンテキスト情報しか考慮していません.一方Attention Encoder-Decoder とTransformer(ここではこの二つをSeq2Seq と呼ぶことにします)は,デコーダネットワークが存在するため,出力系列のコンテキスト情報も考慮しています.そのため,一般にはCTC よりもSeq2Seq モデルのほうが高い音声認識性能を示します.しかし,Seq2Seq モデルはCTC に比べて学習が安定しないことが指摘されています.この理由として,Seq2Seq モデルの学習中において,Attention 機構の動作が不安定になることが報告されています.そこで,CTC とのマルチタスク学習により,Attention の動作を安定させて学習を高速にする手法としてCTC-Attention ハイブリッドモデル[16]とCTCTransformerハイブリッドモデル[17]が提案されています.

[3] 河原達也:IT Text 音声認識システム(改訂2 版),オーム社(2016)
[4] 電子情報通信学会:知識ベース,2 群7 編,2 章,音声認識(2010)
[5] 河原達也:音声認識技術の変遷と最先端 ─深層学習によるEnd-to-End モデル─,日本音響学会誌(2018)
[6] 神田直之:音声認識における深層学習に基づく音響モデル,日本音響学会誌(2017)
[7] 増村 亮:深層学習に基づく言語モデルと音声言語理解,日本音響学会誌(2017)
[8] 千葉祐弥:さまざまな音響特徴量 それぞれの使い方や意味を教えて下さい,音響学入門ペディア
[9] Ravanelli, M., et al.: Speaker recognition from raw waveform with SincNet, SLT 2018(2018)
[10] Hinton, G., et al.: Deep neural networks for acoustic modeling in speech recognition, IEEE Signal Processing Magazine(2012)
[11] Mikolov, T., et al.: Recurrent neural network based language model, Interspeech 2010(2010)
[12] Graves, A., et al.: Connectionist temporal classification: Labelling unsegmented sequence Data with Recurrent Neural Networks, ICML 2006(2006)
[13] Bahdanau, D., et al.: End-to-end attention-based large vocabulary speech recognition, ICASSP 2016 (2016)
[14] Chan, W., et al.: Listen, attend and spell: A neural network for large vocabulary conversational speech recognition, ICASSP 2016(2016)
[15] Dong, L., et al.: Speech-Transformer: A no-recurrence sequence-to-sequence model for speech recognition, ICASSP 2018(2018)
[16] Kim, S., et al.: Joint CTC-attention based end-to-end speech recognition using multi-task learning, ICASSP 2017(2017)
[17] Karita, S., et al.: Improving transformer-based end-to-end speech recognition with connectionist temporal classification and language model integration, Interspeech 2019(2019)

音声認識関連研究のツール

ここでは,音声認識システムを扱うためのツールを紹介します.

構築済みの音声認識システムを使いたい
  • Julius
    オープンソースの汎用大語彙連続音声認識エンジンです.GMM-HMM およびDNN-HMM での音声認識が可能です.標準的な日本語の学習済みモデルも公開されており,それを用いることで手持ちのPC で日本語のリアルタイム音声認識が可能になります.また音響モデル,発話辞書,言語モデルを独自のものに入れ替えて用いることも可能です.認識結果のほかに音響モデルスコアや言語モデルスコアなども出力することができるため,音声認識結果情報を別のタスクに用いるといった研究にも応用できます.
音声認識システムを構築したい,研究したい
  • HTK(Hidden Markov Model Toolkit)
    GMM-HMM が主流だった時代においておそらく最もよく使われていた音声認識モデル構築ツールだと思います.現在はGMM-HMM だけでなくDNN-HMM も学習可能になっています.音声認識モデルの研究自体はすでにDNN が主流ですが,データが極端に少ないタスクなどでは,現在でもGMM-HMM は有用な手法です.またJulius との互換性もあるので,学習したモデルをJulius 上で使用する場合はHTK を使うのがよいでしょう.
  • Kaldi
    DNN-HMM を使った音声認識モデルの構築で,最もよく使われているツールです.シンプルなDNN-HMMモデルだけでなく,系列識別学習やLattice-free MMI モデルといった高認識精度を誇るモデルも学習可能です.また,さまざまなデータセットに対するモデルの学習レシピが用意されています.
  • Pytorch Kaldi
    主にKaldi の音響モデルをPytorch で開発することを目的としたツールです.Kaldi は音響モデルが独自のフォーマットで作成されており,プログラムのほとんどがC++とCUDA で記述されているため,新しいネットワーク構造などを定義するのが容易ではありません.Pytorch Kaldi では,特徴量や音声認識エンジンなどはKaldiのものを流用しつつ,ネットワーク構造をPytorch で定義できるようにしています.
  • ESPNet
    End-to-End モデルの構築で最もよく使われるツールです.Attention Encoder-Decoder モデルやTransformer,またこれらのCTC Hybrid モデルが学習可能です.音声特徴量抽出はKaldi のものを使っているため,Kaldi と互換性があります.また,さまざまなデータセットに対するモデルの学習レシピが用意されています.音声認識だけでなく,音声合成モデルも学習可能です.

データセット

日本語
英語

以下にあげたコーパスはいずれもKaldi,ESPNet にレシピが用意されています.

  • LibriSpeech
    約1 000 時間の英語音声が収録された大規模コーパスです.
  • SwitchBoard
    英語の電話音声が収録されています.
  • TIMIT
    音素バランスを考慮した文章を読み上げた音声が収録されています.
  • WSJ0およびWSJ1
    Wall Street Journal のニュースを読み上げた音声が収録されています.
  • TED-LIUM
    TED の音声と書き起こしが収録されています.

ほかにも中国語コーパスなどさまざまなコーパスがOpenSLRというサイトに公開されています.

主要な学会

音声認識に関する研究が活発に発表されている学会を紹介します.

国際会議
  • Interspeech
    音声処理に関する最大規模の国際会議です.Online Archive に過去のProceedings が閲覧可能です.
  • ICASSP
    音響信号処理に関する最大規模の国際会議です.
  • ASRU
    音声認識に関するワークショップです.後述のSLT と1 年ごとに交互に開催されています.
  • SLT
    音声言語処理に関するワークショップです.ASRU と1 年ごとに交互に開催されています.
  • CHiME Challenge
    雑音環境下音声認識の国際コンペティションです.
国内会議・研究会

おわりに

音声認識はすでに高い性能を達成しており,終わった研究のように思われる方もいるかもしれませんが,雑音環境下や方言といった,学習環境とミスマッチな環境での音声認識はまだまだ改善の余地があります.また,言語やターゲットとなる環境によっては学習データが十分に収録できないため,少量データでの音声認識技術も課題になっています.一方で,性能が大きく向上したからこそ,音声認識をツールとして別の研究テーマを模索することも可能になってきたと思います.本稿をご覧いただき,音声認識に興味をもっていただければ幸いです.