我正在尝试编写一个应用程序,允许用户从远程系统说出一小组命令,并在我的服务器上执行它们。使用pocketsphinx解析语音文本。当使用麦克风在本地运行时,无论我如何诋毁单词,pocketsphinx_continuous都能完美运行。但是当导入音频文件并使用ffmpeg将音频下采样到单个通道(16位PCM文件)时,它将毫不费力地解析第一个单词。然后它将跳过其他所有内容并将其视为。我确信问题是文件格式而不是pocketphinx配置。
使用命令行
ffmpeg -y -i Sound\AddSheet.wav -ac 1 -f s16le -acodec pcm_s16le -ar 16k AddTmp.wav
在批处理文件中。
我得到的输出的底部是:
INFO: fsg_search.c(1407): Start node ADD.0:5:47
INFO: fsg_search.c(1407): Start node <sil>.0:2:49
INFO: fsg_search.c(1446): End node <sil>.126:128:305 (-486)
INFO: fsg_search.c(1662): lattice start node <s>.0 end node <sil>.126
INFO: ps_lattice.c(1352): Normalizer P(O) = alpha(<sil>:126:305) = -175371
INFO: ps_lattice.c(1390): Joint P(O,S) = -176076 P(S|O) = -705
000000000: ADD USER
哪个不是文件中的音频。文件中的文字是“ADD SPREADSHEET”,它可以在没有干预.wav文件的情况下从同一个麦克风中完美运行。
我尝试使用sox增加音量并降低背景噪音:
sox -v 3.0 Sound\%1 Sound\%1-loud.wav ffmpeg -i Sound\%1-loud.wav -vn -ss 00:00:00 -t 00:00:01 -y Sound\%1-noiseaud.wav
sox Sound\%1-noiseaud.wav -n noiseprof Sound\%1-noise.prof
sox Sound\%1 Sound\%1-clean.wav noisered sound\noise.prof 0.21
ffmpeg -y -i Sound\%1-clean.wav -ac 1 -f s16le -acodec pcm_s16le -ar 16k AddTmp.wav
对最终结果没有明显影响。
如果查看输出,您会注意到fsg_search.c已找到ADD作为起始节点,然后静默其余部分。请帮忙。