いろいろやってみるにっき

てきとーに生きている奴の日記

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


JuliusでYouTubeからダウンロードしたmp4の音声データを文字起こし練習 その2

前回はJuliusの音声認識パッケージの準備を行い、YouTubeからダウンロードした動画データから音声をモノラルで抽出し、WAVファイル化し、音声が編集できるところまで実施した。

 

 

サウンドドライバの設定

前々回でサウンドドライバを設定している。

 

毎回コマンドを打たなくても済むように、.profileに下記の行を追加しておく。

export ALSADEV=hw:1

ターミナルを立ち上げ直すかsourceコマンドで有効にしておく。

$ source /home/UserName/.profile

 

 Julius音声認識パッケージ ディクテーションキットを使う

 ディクテーションキットを使って、初回の確認で使用したWAVファイルから文字起こしをしてみる。 sample.wavには「リンゴ 3 個 を ください」と入っている。下記コマンドで起動すると enter filename-> が出るので/home/UserName/julius/grammar-kitにあるsample.wavを入力する。

cd julius
cd grammar-kit/SampleGrammars/fruit
julius -C testmic.jconf -nostrip -charconv SJIS UTF-8 -input rawfile

f:id:shigeo-t:20191125142552p:plain

ディクテーションキットの起動方法はrun-linux-gmm.shとrun-linux-dnn.shに書かれている。実行権限が付いていないので、コピペして -nostrip オプションを付与して起動する。まずは run-linux-dnn.shで確認。

cd julius
cd dict/dictation-kit-4.5 # dictation kitはdictディレクトリに格納
julius -C main.jconf -C am-dnn.jconf -demo -dnnconf julius.dnnconf -nostrip -input rawfile

f:id:shigeo-t:20191125142955p:plain

 

困ったぞ。リンゴ、ぶどう、蜜柑と個数とちょっとした助詞などしかない辞書なら

pass1_best: <s> リンゴ 3 個 を ください </s> 
sentence1: <s> リンゴ 3 個 を ください </s>

と帰ってくるのに、

pass1_best:  備後 三 五 ください 。           
sentence1:  ビンゴ 参考 ください 。 

 になってしまう。

続いてrun-linux-gmm.shを参考に実行。

julius -C main.jconf -C am-gmm.jconf -nostrip -input rawfile

f:id:shigeo-t:20191125150639p:plain

pass1_best:  ビンボー さん と ください 。
pass1_best_wordseq: <s> ビンボー+名詞 さん+接尾辞 と+助詞 ください+動詞 </s>
pass1_best_phonemeseq: silB | b i N b o: | s a N | t o | k u d a s a i | silE
pass1_best_score: -5177.333496
### Recognition: 2nd pass (RL heuristic best-first)
STAT: 00 _default: 11292 generated, 1486 pushed, 221 nodes popped in 210
sentence1:  貧乏 参考 ください 。
wseq1: <s> 貧乏+名詞 参考+名詞 ください+動詞 </s>

結局「ビンボー さん と ください」とか「貧乏 参考 ください」である。

pass1_best:  ビンボー さん と ください 。 
sentence1:  貧乏 参考 ください 。

 

ということでYouTubeからダウンロードして作成したWAVファイルに進むのはやめ、他のキットを試してみることに。なお、~model/lang_m/00readme.txtには下記のように記載されている。

言語モデル・発音辞書について

【ファイル一覧】

bccwj.60k.bingram 言語モデル (Julius bingram形式)
bccwj.60k.tri.arpa.gz 言語モデル (ARPA形式,gzip圧縮)
bccwj.60k.htkdic 発音辞書
bccwj.60k.pdp.htkdic 発音辞書 (位置依存音素用)

言語モデル

学習データは国立国語研究所による『現代日本語書き言葉均衡コーパス
(BCCWJ)の全テキスト(約1億語)で,単語の単位はBCCWJで定義された短単位を
そのまま用いている.表層表現と品詞を結合して言語モデル上の単語とした.

学習データには単語表記の補正処理を実施した.以下に主なものを挙げる.
ただし補正処理は完全で正確なものではない.
・化学記号等を除き,数字を漢数字に統一
・読み(発音)の与えられていない単語を削除
・カナ単語の一部をひらがなに正規化
(感動詞・副詞・形容詞・形状詞・代名詞・助詞・助動詞・連体詞・接続詞)
カタカナ語の語末長音は原則としてのばすよう統一
・拗音などの「ぁぃぅぇぉゃゅょっ」が大きな仮名文字で表記されている
ものは小文字に変換
・英単語は(一部を除き)カタカナに置換

言語モデルは単語Trigramモデルで,構築には SRILM-1.7.0 を使用した.
出現回数が40回以下の単語は語彙から除外(カットオフ)した.これによる
語彙のサイズは59,084である.bigram/trigramについては,1回しか出現
しないエントリを除外した.バックオフスムージングには Modified
Kneser-Ney法が適用されている.

なお,上記のbingramファイルは,Juliusの仕様に従って順向きbigram
モデルと逆向きtrigramモデルから生成されている.

文字コードUTF-8である.

【発音辞書】

発音辞書は,BCCWJで各単語に与えられている読み(発音形)をもとに作成した.
単語には異なる読みが付与されていることがあり,この場合はコーパス中の読みの生起頻度をもとに確率を計算して,発音エントリに付与している.
発音辞書のエントリ数は64,274である.

 

 Julius音声認識パッケージ 話し言葉モデルキットを使う

 ディクテーションキットと同様に、run-linux.shに起動コマンド例が書かれている。-nostripオプションを追加して起動する。

julius -C main.jconf -C output-style.jconf -dnnconf main.dnnconf -nostrip -input rawfile

f:id:shigeo-t:20191125144441p:plain

 こちらは少しいい。pass1_bestでは正解なのだが、なぜかsentence1では「リンゴ を 参考 ください」になってしまっているが。

pass1_best:  リンゴ 三 個 ください 
pass1_best_wordseq: <sil> リンゴ+リンゴ+名詞 三+サン+名詞 個+コ+接尾辞 ください+クダサイ+動詞 <sil>
pass1_best_phonemeseq: sp_S | r_B i_I N_I g_I o_E | s_B a_I N_E | k_B o_E | k_B u_I d_I a_I s_I a_I i_E | sp_S
pass1_best_score: 236.945465
### Recognition: 2nd pass (RL heuristic best-first)
STAT: 00 _default: 741 generated, 667 pushed, 39 nodes popped in 200
sentence1:  リンゴ を 参考 ください 
wseq1: <sil> リンゴ+リンゴ+名詞 を+オ+助詞 参考+サンコー+名詞 ください+クダサイ+動詞 <sil>

この話し言葉モデルキットは~/models/00readme.txtに下記のように書かれている。

 音響モデル・言語モデルについて

1. DNN-HMM音響モデル

※この音響モデルは,Juliusディクテーションキットv4.4のものと同一である.

【ファイル一覧】

W_*.npy, bias_*.npy, prior DNN定義ファイル
binhmm.SID DNN-HMM音響モデル (triphone, HTK形式)
config.lmfb 特徴量設定ファイル
logicalTri.bin Triphoneリスト (バイナリ形式,上記DNN-HMM専用)
norm 正規化パラメータファイル

【学習データ】

学習データはASJ-JNASコーパス(86時間)およびCSJ(日本語話し言葉コーパス)
模擬講演(292時間)の計378時間である.

特徴量はFBANK 40次元およびその1次・2次差分の計120次元(いわゆるFBANK_D_A)で,平均と分散の正規化が行われている.adintool等の音声入力時は同梱の正規化パラメータを適用し(-cmnload),かつ -cvn オプションを与えること.これらの特徴量はケプストラムではないが,ケプストラムの正規化フレームワークを流用して正規化を行う.

【DNN-HMMモデル】

HMMは実質3状態のLR型で,4,874個の状態からなる状態共有モデルである.
状態確率がDNNによって与えられる.

DNNは入力層・出力層および7層の隠れ層を持つニューラルネットワークである.
各層のノード数は次の通りである
入力層: 1,320 (120次元 x 11フレーム)
隠れ層: 2,048
出力層: 4,874 (HMMの状態数)

各層はRBMによる初期化, クロスエントロピ基準による通常のfine tuningとsMBR基準による系列学習により構築されている.このDNN-HMMモデルは性別非依存(GID)モデルである.

【作成者】

三村 正人 (京都大学)
2014年1月 (2016年9月 更新)

2. 単語Trigram言語モデル

【ファイル一覧】

csj.bingram CSJによる言語モデル (Julius bingram形式)
csj.pdp.htkdic 発音辞書

【モデル概要】

学習データは『日本語話し言葉コーパス』(CSJ)の学会・摸擬講演のテキストで計2,702講演・767万語である.CSJにおける短単位を単語として用いている.
文字コードはShift-JISである.「あー」のようなフィラー単語については,認識結果として出力しないよう,発音辞書であらかじめ出力が空に設定されている.

【作成者】

秋田 祐哉 (京都大学)
2017年12月

以上

 

 Julius音声認識パッケージ 講演音声モデルキットを使う

 話し言葉モデルキットと同様に、run-linux.shに起動コマンド例が書かれている。-nostripオプションを追加して起動する。

julius -C main.jconf -C output-style.jconf -dnnconf main.dnnconf -nostrip -input rawfile

f:id:shigeo-t:20191125145156p:plain

ディクテーションキットよりは良いが、話し言葉モデルキットには劣る結果となった。

pass1_best:  リンゴ 参考 ください 
pass1_best_wordseq: <sil> リンゴ+リンゴ+名詞 参考+サンコー+名詞 ください+クダサイ+動詞 <sil>
pass1_best_phonemeseq: sp_S | r_B i_I N_I g_I o_E | s_B a_I N_I k_I o:_E | k_B u_I d_I a_I s_I a_I i_E | sp_S
pass1_best_score: 217.221802
### Recognition: 2nd pass (RL heuristic best-first)
STAT: 00 _default: 652 generated, 640 pushed, 37 nodes popped in 200
sentence1:  リンゴ を 参考 ください 
wseq1: <sil> リンゴ+リンゴ+名詞 を+オ+助詞 参考+サンコー+名詞 ください+クダサイ+動詞 <sil>

 講演音声モデルキットは~/models/00readme.txtに下記のように書かれている。

 音響モデル・言語モデルについて

1. DNN-HMM音響モデル

※この音響モデルは,Juliusディクテーションキットv4.4のものとは異なる.

【ファイル一覧】

W_*.npy, bias_*.npy, prior DNN定義ファイル
binhmm.SID DNN-HMM音響モデル (triphone, HTK形式)
config.lmfb 特徴量設定ファイル
logicalTri.bin Triphoneリスト (バイナリ形式,上記DNN-HMM専用)
norm 正規化パラメータファイル

【学習データ】

学習データは『日本語話し言葉コーパス』(CSJ)の学会講演で,計233時間である.

特徴量はFBANK 40次元およびその1次・2次差分の計120次元(いわゆるFBANK_D_A)で,平均と分散の正規化が行われている.adintool等の音声入力時は同梱の正規化パラメータを適用し(-cmnload),かつ -cvn オプションを与えること.これらの特徴量はケプストラムではないが,ケプストラムの正規化フレームワークを流用して正規化を行う.

【DNN-HMMモデル】

HMMは実質3状態のLR型で,4,829個の状態からなる状態共有モデルである.
状態確率がDNNによって与えられる.

DNNは入力層・出力層および7層の隠れ層を持つニューラルネットワークである.
各層のノード数は次の通りである
入力層: 1,320 (120次元 x 11フレーム)
隠れ層: 2,048
出力層: 4,829 (HMMの状態数)

各層はRBMによる初期化, クロスエントロピ基準による通常のfine tuningとsMBR基準による系列学習により構築されている.このDNN-HMMモデルは性別非依存(GID)モデルである.

【作成者】

三村 正人 (京都大学)
2017年10月

2. 単語Trigram言語モデル

【ファイル一覧】

csj.bingram CSJによる言語モデル (Julius bingram形式)
csj.pdp.htkdic 発音辞書

【モデル概要】

学習データは『日本語話し言葉コーパス』(CSJ)の学会・摸擬講演のテキストで 計2,702講演・767万語である.CSJにおける短単位を単語として用いている.
文字コードはShift-JISである.「あー」のようなフィラー単語については,認識結果として出力しないよう,発音辞書であらかじめ出力が空に設定されている.

【作成者】

秋田 祐哉 (京都大学)
2017年12月

以上

 

講演では「参考」は頻出しても「3個」が出ないか~w

 

この先の作戦

この3つのJulius音声認識パッケージの特性をそれぞれ理解し、どれをベースにするのが良いのか検討する。またJulius記述文法音声認識実行キットも確認してみる。これは前回動作確認したサンプルと同じ手法である。.vocaファイルとかを作成するタイプだし。

YouTubeからダウンロードとかする前に、先にsample.wavでそれぞれ試してみれば良かった。

怪談のテープ起こし (集英社文庫)

怪談のテープ起こし (集英社文庫)

 
月10万円も夢じゃない!  Webを活用して副業ライターで稼ぐ!

月10万円も夢じゃない! Webを活用して副業ライターで稼ぐ!

 
お時間あったら、他のエントリもクリックして頂ければ幸いです。