【问题标题】:Digits recognition with CMU Sphinx使用 CMU Sphinx 进行数字识别
【发布时间】:2016-03-24 05:58:02
【问题描述】:

尊敬的专家,

我有很多包含数字 (0 - 9) 的 mp3 文件(原始音频流采样率为 11.025 kHz)。

不同的说话者(男性/女性)说例如“一”、“七”、“三”等,它们之间有停顿(~ 2 - 2.5 秒)

我将使用 CMU Sphinx 来识别语音(桌面应用程序)。所以我有一些问题:

  1. MP3 解码:如何解码我的 mp3 文件,这意味着什么采样率 我应该指定 ffmpeg 吗(因为我知道不推荐 上采样/下采样流)。我应该在解码时过滤噪声和/或频带吗?

  2. 声学模型:如果我对流进行上采样/下采样,怎么能 我找到了一个支持 11025 kHz 的声学模型。如果我,那么最好的数字模型是什么?

  3. 识别模式:我发现有两种转录模式 - 键 发现和识别。哪种模式会更好 我只有数字(还有一些噪音)

谢谢

UPD:

尼古拉,谢谢你的回答。我已经尝试过您的建议 - 它有效!

如果你不介意我想问一些额外的问题:

  1. 我发现其中一种 voxforge 声学模型比 en-us-8khz 更准确。好吗?

  2. 只有 45% 的文件被正确识别。其他 55% 的人有 20-90% 的错误。因此我的问题是:是否有可能估计所获得结果的置信度?例如,我可以跳过“不确定”识别的文件?

  3. 如果答案 2 为“否”,您有什么建议可以提高准确性?我知道,这个问题很抽象……

提前谢谢你!

UPD2:

顺便说一下,最好的参数设置(我只是通过各种参数)是:

-remove_dc yes -remove_noise no -vad_threshold 3.4 -vad_prespeech 19 -vad_postspeech 37 -silprob 2.5

【问题讨论】:

    标签: speech-recognition voice-recognition cmusphinx pocketsphinx


    【解决方案1】:

    MP3 解码:我如何解码我的 mp3 文件,这意味着我应该为 ffmpeg 指定什么采样率(因为我知道它不推荐用于上采样/下采样流)。我应该在解码时过滤噪声和/或频带吗?

     ffmpeg -i file.mp3 -ar 8000 file.wav
    

    声学模型:如果我不对流进行上采样/下采样,如何找到支持 11025 kHz 的声学模型。如果我这样做,数字的最佳模型是什么?

    en-us-8khz 有下载,你需要像tutorial一样创建一个数字语法,然后按以下方式使用

     pocketsphinx_continuous -infile file.wav -jsgf digits.gram -hmm en-us-8khz -samprate 8000
    

    识别模式:我发现有两种转录模式——关键点定位和识别。考虑到我只有数字(和一些噪音),哪种模式会更好

    识别方式

    【讨论】:

    • 谢谢你,Nokilay。我的幸运组合是:pocketsphinx_continuous -infile file.wav -jsgf digits.gram -hmm voxforge_model -samprate 8000 -remove_dc yes -remove_noise no -vad_threshold 3.4 -vad_prespeech 19 -vad_postspeech 37 -silprob 2.5 CMU Sphinx 常见问题解答说:从 mp3 解码的音频文件中的零静音区域会破坏解码器。您可以使用抖动引入小的随机噪声来解决此问题。您的意思是它会影响结果吗?
    • 不,voxforge 模型的准确度肯定要低得多。您的附加参数也是错误的,您不应该禁用噪声消除。要分析错误的准确性,您需要提供少量测试样本。我建议你在 cmusphinx 论坛上讨论这个问题,它确实不适合 stackoverflow 格式。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多