私はラップトップ(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"
感謝。
私はおそらく間違っていますが、スフィンクスは非常に良い単語を単語ごとに翻訳できると思います。だから、単語を分けるためにあなたのwavを分割してみてください。オーディオでそれらの間のミニポーズを検索することで、プログラムで行うことができます。しかし、私は間違いが間違いです。しかし、あなたはそれがうまくいくかどうかを見るために単語の塊にそれを試すことができます。 – Dalen
@Dalen、あなたは間違っています。また、連続した会話では単語間に休止があることに注意してください。 –
ええ、ありがとう、私はスフィンクスが裕福だった昔に立ち往生しました。あなたが「休憩がない」と言うことを意図していたなら、まあそれは真実ではありません。聞こえる休止はありませんが、境界が存在し、少し微調整して見つけることができます。そして、あなたはこのようにしてほとんどの単語を分けることができます。 – Dalen