忍者ブログ
mirac cafe という名の不思議なブログ

※ ブログ等での私の投稿は個人の見解によるものであり、 所属する組織の見解ではありません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

音素アラインメントを取ろうとしたら、相当ハマったので備忘録。

音声系でない人のために書いておくと、

例えば「あいうえお」という発言した音データが与えられたときに、


何秒のところで「あ」と言っていて、
何秒のところで「い」と言っているのか、

とかそういうことを知りたかったわけです。


ということで問題設定

入力:音声信号と、その音素列
出力:アラインメント結果


juliusという音声認識器の、アラインメント機能を使うことにしました。



言語モデルとして文法モデルを使って、

grammerファイルとvocaファイルを適当に設定してやれば、

juliusに好きな文章列を出力させることができるはず、という荒っぽい考え方。


grammerファイル

  S: NS_B S01 SP S02 SP NS_E
 
vocaファイル
 
  % NS_B
  NS_B silB
  % NS_E
  NS_E silE
  % SP
  SP sp

  % S01
  S01 sh i t a n o
  % S02
  S02 o t: o t o n o
  % S03
  S03 k o e g a k i k o e t a
(音素は適当...あってますかね?)

この2つからmkdfa.plを使ってDFAを作る。

で、juliusを以下のように実行。

julius -C hogehoge.jconf -input file -filelist hogehoge -palign -sb 5000

palignは状況に応じてwalignとかに変えてもOKです。

注意点が2つ。

1. palignなどのアラインメント出力は、sp(ショートポーズ)が正しく反映されない。
2. sbの引数に大きな数字を与えておく

  -sb score
    スコアエンベロープの幅.各フレームごとに,それま で
    の 最大スコアからこの幅以上離れた部分についてはscan
    しない.値を小さくすることで第2パスの認識速度が 速
    くなるが,その分計算誤りが起こる可能性が高くなる.

 
2つ目に気づくのにだいぶ時間がかかって、本当大変でした。

sbを大きくしなかった場合、アラインメントしたい文字列が長くなると、

hypothesis stack exhausted, terminate search now

というエラーが出て終了してしまいます。

ネットの掲示板にも完全な回答は寄せられていないようですが、

とりあえず自分の場合は5000とか50000とか、

とにかく大きくしておけば解決できたので、

ひとまず満足しています。



 

PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
[11/30 kamae]
[04/30 mirac]
[04/29 渚]
[01/20 渚]
[01/01 mirac]
[12/09 mirac]
[10/31 mirac]
[03/14 mirac]
[08/10 404ななしさん]
[08/09 halwhite]
最新記事
最新トラックバック
ブログ内検索
忍者ブログ [PR]