语音识别 - 线性预测编码

Posted

技术标签:

【中文标题】语音识别 - 线性预测编码【英文标题】:Speech Recognition - Linear predictive coding 【发布时间】:2012-08-12 22:03:09 【问题描述】:

我正在工作/研究一个用于教育目的的项目构想,并想做有关语音识别的项目,没什么大不了的,只是介绍一下我在该领域的起步。基本上,项目和算法将输入一个 (.wav) 文件,然后识别说话的人是说“是”还是说“否”。我正在寻找使用线性预测编码。

基本上,在我的脑海中,我正在考虑以下算法:

    将 .wav(原始数据)读入向量中 将向量分成大小相等的块 针对特定特征处理每个块 找出模型最有可能与生成的音素字符串匹配的单词。

然后我想使用相关性等相似性度量来找到正确的电话。

所以,基本上,在读入数据文件之后,并分成块。它应该/将包含这样的内容:

rawdata = 

[0] => 'Y',
[1] => 'E',
[2] => 'S'

或者将包含频率结果,然后可以与电话进行比较。

我的问题是,这看起来像是解决问题的好算法吗..

我的下一个问题:

当我尝试将 .wav 文件读入内存时,我得到(某种)以下结果..

20 30 10 30 40 50 .. 20 20 .. 10 20 .. 60 40 
10 20 30 40 50 60 ... .. . . . . 

它们都是整数值,所以,一旦我获取了所有标题信息.. 剩下的数据就是我需要转换成正确的介质然后这就是数据..?我有点困惑。

希望有人可以帮助我,并且,我已经正确地写出了问题。谢谢。

【问题讨论】:

为什么我收到了负面反馈?!?怎么不清楚??神 因为你的问题过于宽泛了。 我不知道你的C++水平是多少,如果你是高手请忽略这条评论,但根据我的经验,在Matlab中整理一个算法,然后转向C++。信号和图像处理在 Matlab 中比在 C++ 中更容易和更短。 您是在询问有关语音识别和音频 DSP 的教科书的许多随机章节的内容。所以先去读几本关于这个主题的书吧。 相信你的问题属于dsp.stackexchange.com/faq 【参考方案1】:

如果你不同意我的意见,不,这不是一个好的算法。

首先,人们说话的速度不同,发音的速度也不同。您不能从随机切片输入数据开始。

其次,要获得一些好的结果,您需要大幅降低输入的噪声。您需要专注于人类语音主要使用的频率。然后你需要一些东西来识别元音,然后你尝试猜测这个词,你需要一些真实的数据。不过你可能不会得到任何可用的东西。

回答您关于 waw 文件的问题,即标题 + 数据,我不知道标题,但由于 waw 是一种古老的格式,因此获得一些文档并不难。

数据部分是一个整数值数组,表示给定时刻的声音强度。对于 44 kHz waw 文件,强度每秒测量 44 000 次,并存储。它只是原始数字,根本没有压缩(有没有想过为什么 waw 文件这么大?)除了标题,它告诉你采样率和整数类型(通常是 16 位)等等。

您分析这些庞大的数据以获取有关所使用频率的一些信息,但您应该在开始之前真正研究声音和所有事物的数学。哎呀,即使我不确定我是否能写出一些东西,大约有一半的时间可以成功识别 3 个字母的单词。

【讨论】:

嘿,谢谢您的回复.. 我发现关于将样本分成相等的部分从这里:cs.dartmouth.edu/~dwagn/aiproj/speech.html他的算法/实现似乎有效.. 我只是想以不同的方式做它并使用过零的线性预测编码..

以上是关于语音识别 - 线性预测编码的主要内容,如果未能解决你的问题,请参考以下文章

[语音识别] 文本加标点--BERT预测

[语音识别] 文本加标点--LSTM预测

语音识别系列︱paddlespeech的开源语音识别模型测试

语音识别系列︱paddlespeech的开源语音识别模型测试

语音识别系列︱paddlespeech的开源语音识别模型测试

基于线性预测的语音编码原理解析