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

なんとか自分の会社を立ち上げるところまで漕ぎ着けた、てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


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を活用して副業ライターで稼ぐ!