英語の自動Transcriptの後処理

機械的に音声からTranscriptを生成した場合、人間が読むテキストとして整えるには句読点の付与、Capitalizeなどの処理が必要になる。

以下、Postprocessing Framework – CMUSphinx Open Source Speech Recognitionを読んだメモ。

必要な処理:

  1. センテンスに分ける。
    • センテンスに分けるのは音声認識の重要な問題で文脈、文法、意味に依存し、統計的に決めるなどの技術が必要。
  2. 句読点を付与。
    • 「. , ! ? : ; “ ”」等あるが難しいので「. ,」位の付与の検討が妥当。
  3. Capitalization。
  4. 省略形への置き換え。
  5. 数値等の一般的な表記への置き換え。

その他:

  • 話し言葉はテキスト素材と比べると一般的にあまり組織化されていない。

テストデータ:

言語モデルはgutenberg text database:95%、残りの5%はテキストを使用して構築。

実装:

このプロジェクトはCapitalize、句読点付与された言語モデルがベース。 似た実装はdisambig tool from SRILM(これはcapitalizationだけ)。

言語モデル

訓練データでは、コンマは<COMMA>、ピリオドは<PERIOD>に置き換え。センテンスは段落にグループ化されて、始めと終わりを示すセンテンスマーカー<s> </s>はまれ。 言語モデルsphinx_lm_convert(あるいは sphinx3_lm_convert)でARPAフォーマットからDMPフォーマットに圧縮されている必要がある。 gutenberg.DMP 言語モデルは適切にフォーマットされていて、プロジェクトの sourceforge の language model download section にある。

CMU Sphinx - Browse /Acoustic and Language Models at SourceForge.net

から [Archive] → [English Gutenberg Postprocessing] をたどって 「gutenberg.DMP」をダウンロード。

使い方:

プロジェクトは下記からダウンロード可能

https://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/branches/ppf →以下のURLにリダイレクトされた。 https://svn.code.sf.net/p/cmusphinx/code/branches/ppf/

ダウンロードしてビルドする。

subversionをインストール。

brew install subversion

svnでチェックアウト。

svn co https://svn.code.sf.net/p/cmusphinx/code/branches/ppf/

チェックアウトしたディレクトリに移動。

cd ppf

ant をインストール。

brew install ant

環境変数が設定されているか確認して実行。

ant

テキストの後処理には「postprocess.sh」スクリプトを使用する。

sh ./postprocessing.sh -input_text path_to_file -lm path_to_lm

↑参照ページでは上記のようなコマンドだったが、スクリプトのファイル名とオプション名が異なるようだったので、以下のようなコマンドでいけた。

sh ./postprocess.sh -input_file path_to_file -lm path_to_lm

# 「sample.txt」のファイルを言語モデルに「gutenberg.DMP」を指定したコマンド例

sh ./postprocess.sh -input_file sample.txt -lm gutenberg.DMP

言語モデルに「gutenberg.DMP」を用いて、ざっくりと実際に試した感じだと、最初の方のテキストに関しての処理はまあまあだったが、何らかの原因があるのか、途中からのテキストに関しては単に単語をコンマで区切るだけという感じになった。

色々と試してみればそれなりに使えそうだという印象。

参照ページ: