c++ - 小词汇量语音识别(约 20 个单词)

标签 c++ fft speech-recognition speech-to-text hidden-markov-models

我目前正在为我的大学做一个项目。任务是编写语音识别系统,该系统将在后台的手机上运行,​​等待几个命令(例如,调用 0 123 ...)。

这是一个 2 个月的项目,因此不必非常准确。可接受的噪音量可以很小,单词会被片刻的寂静分开。

我目前正在加载以 RAW 16 位 PCM 格式编码的示例字。将其拆分为 block (每秒约 50 个)并在每个 block 上运行 FFT 以获得频谱。

要解决的问题是: 1)通过较长的录音并将其拆分成单词。 2) 找到单词的最佳匹配

1) 我正在考虑一个接一个地检查一个 block ,如果我遇到几个具有更高人类语音频率高度的 block ,则假设这个词已经开始。无论如何,我正在寻找可能对此有所帮助的资源。

2) 这个接缝有点硬。是否有必要为这样的系统使用 HMM,或者假设词汇量很小(20 个单词)可能有更简单的方法?

编辑: 该项目的重点是我自己编写系统,所以我不能使用现成的库,如 Sphinx 或 HTK。

问候, 卡罗尔

最佳答案

如果以后有人有同样的问题。寻找 2 个主要关键字:

MFCC-Mel-Frequency cepstrum coefficients为每个单词模板计算一系列系数

DTW - 将捕获的单词与模板匹配 可以在维基百科上找到足够好的 DTW 描述

这种方法足以在 20 个单词的字典上达到 80% 左右的准确率,并在类里面进行了很好的演示。

关于c++ - 小词汇量语音识别(约 20 个单词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349752/

相关文章:

python - 带有对数频率轴的 scipy 频谱图?

macos - Swift:如何调用 NSSpeechRecognizer 函数

c++ - 抛出临时变量而不是局部变量 - 为什么?

c++ - OpenCV 与 cv::FAST 有问题

fft - 亲吻 FFT 线程安全

algorithm - 计算 Nlg(N) 中的 res[i+j] = a[i]*b[j]

c# - 通过语音识别控制鼠标

android - 西类牙语语音识别

c++ - 通过引用捕获异常对象、临时对象、生命周期问题

C++ 相同的模板用于多个函数?