2016-07-16 9 views
2

私はラップトップ(Linux Mint 17)にpocketsphinxをインストールして、WAVオーディオファイルをテキストに転記することを目指しています。オーディオはスペイン語であるので、私は同社のウェブサイトからVoxforge 0.2スペイン語モデルをダウンロードし、次のコードをコピー&ペースト適応しました:Cmusphinxスペイン語モデルインコヒーレントな転写

#include <pocketsphinx.h> 

int main(int argc, char *argv[]) 
{ 
    ps_decoder_t *ps; 
    cmd_ln_t *config; 
    FILE *fh; 
    char const *hyp, *uttid; 
    int16 buf[512]; 
    int rv; 
    int32 score; 

    if(argc == 2) 
    { 
     printf("Transcribiendo fichero: %s\n", argv[1]); 
    } 
    else if(argc > 2) 
    { 
     printf("Demasiados argumentos.\n"); 
    } 
    else 
    { 
     printf("Se esperaba un sólo argumento.\n"); 
    } 
    config = cmd_ln_init(NULL, ps_args(), TRUE, 
      "-hmm", "/home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000", 
      "-lm", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm", 
      "-dict", "/home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic", 
      NULL); 
    if (config == NULL) 
    { 
     fprintf(stderr, "Failed to create config object, see log for details\n"); 
    return -1; 
    } 

    ps = ps_init(config); 
    if (ps == NULL) 
    { 
     fprintf(stderr, "Failed to create recognizer, see log for details\n"); 
     return -1; 
    } 

    fh = fopen(argv[1], "rb"); 
    if (fh == NULL) 
    { 
     fprintf(stderr, "Unable to open input file.\n"); 
     return -1; 
    } 

    rv = ps_start_utt(ps); 

    while (!feof(fh)) 
    { 
     size_t nsamp; 
     nsamp = fread(buf, 2, 512, fh); 
     rv = ps_process_raw(ps, buf, nsamp, FALSE, FALSE); 
    } 

    rv = ps_end_utt(ps); 
    hyp = ps_get_hyp(ps, &score); 
    printf("Reconocido: %s\n", hyp); 

    fclose(fh); 
    ps_free(ps); 
    cmd_ln_free_r(config); 

    return 0; 
} 

問題WAVモノ16kHzのファイル利回り奇妙な結果ということです。

「はいはい大豆ingenieroのinformático」

I:私はモデルやチューニングに特定のパラメータを再構築する必要がある場合は、私が知りたいことはある ...

たとえば、次のテキストを考慮それを16KHz/16ビット/モノラルWAVファイルに変換します。私のコードを実行する

、それはこの出力を与える:

> ./nlptest voice.wav 
"cola salir en y era de líneas" 

あなたはそれがオリジナルとは全く異なっている見ることができるように。 "hola"と "cola"という言葉だけが発音において似ていますが(絶対的に異なる意味)でもpocketsphinx_continuous使用

は、結果は(それが唯一の単語が異なる)非常に悪いです:あなたのアドバイスのための

> pocketsphinx_continuous -hmm /home/<myuser>/software/voxforge-es/model_parameters/voxforge_es_sphinx.cd_ptm_3000 -lm /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.transcription.test.lm -dict /home/<myuser>/software/voxforge-es/etc/voxforge_es_sphinx.dic -infile voice.wav 
"cola seguir en y era de líneas" 

感謝。

+0

私はおそらく間違っていますが、スフィンクスは非常に良い単語を単語ごとに翻訳できると思います。だから、単語を分けるためにあなたのwavを分割してみてください。オーディオでそれらの間のミニポーズを検索することで、プログラムで行うことができます。しかし、私は間違いが間違いです。しかし、あなたはそれがうまくいくかどうかを見るために単語の塊にそれを試すことができます。 – Dalen

+0

@Dalen、あなたは間違っています。また、連続した会話では単語間に休止があることに注意してください。 –

+0

ええ、ありがとう、私はスフィンクスが裕福だった昔に立ち往生しました。あなたが「休憩がない」と言うことを意図していたなら、まあそれは真実ではありません。聞こえる休止はありませんが、境界が存在し、少し微調整して見つけることができます。そして、あなたはこのようにしてほとんどの単語を分けることができます。 – Dalen

答えて

3

あなたが使用している言語voxforge_es_sphinx.transcription.test.lmのモデルは名前に「テスト」がありますが、テスト目的のみです。より高度なモデルes-20k.lm.gzを当社のウェブサイトhereにダウンロードすることができます。

スペイン語の全体的なモデルは基本的で非常に正確ではありません。あなたが深刻な書き起こしが必要な場合は、それを拡張するために多くの努力をする必要があります。

+0

今、はるかに良い。それは言う: "hola soy ingeniera deniñas"、それは1つの単語を逃すとそれはばかげて聞こえるが、はるかに良いです!ありがとう – cabreracanal

+0

ポイントは、私はvoxforgeから転写テストを除いてスペイン語のモデルを見つけることができなかったということです。私は、スペイン語モデルの現在の状態に驚いています。これは、世界で3番目または2番目に多くの口語です。私はそれが改善してくれることを願っています:) – cabreracanal

+0

単語がモデルボキャブラリにないので、informáticoをデコードしません。 [私たちのチュートリアル](http://cmusphinx.sourceforge.net/wiki/tutoriallmadvanced)に記載されているように、モデルを拡張することができます。我々はリソースが不足しているので、スペイン語の仕事はあまり活発ではない、あなたの助けに感謝します。 –

関連する問題