0

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

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

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

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

因此,基本上,在读入数据文件并拆分为块之后。它应该/将包含如下内容:

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 ... .. . . . . 

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

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

4

1 回答 1

0

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

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

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

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

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

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

于 2012-08-12T22:56:02.500 回答