编写自己的语音识别代码
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 问题描述 我想将语音识别用作硬件项目的一部分,我想完全将其包含在内(我使用的是低功耗,低速的小型设备,例如Arduino和Raspberry Pi,Kinects等,而不能运行具有涉及到一个操作系统(因此是一个封闭/自包含的项目)。 语音识别可能非常复杂,具体取决于您所需的复杂程度。我有一套相对简单的要求。我只想识别自己的声音,并且有一个小词典,我想识别20个左右的单词。因此,我不需要复杂的语音到文本和语音识别库,也不需要通过互联网搜索引擎找到的任何出色的第三方软件(不乏这些!)。我认为我的要求“足够简单”(在一定程度上),我可以编写自己的解决方案。我想知道是否有人编写了这样的自己的流程,我的方法是否存在严重缺陷?有没有更好的方法可以做到这一点,而无需高水平的数学知识或不必编写复杂的算法? 这就是我尝试在下面考虑的解决方案。 解决方案说明 我将使用C语言编写此文档,但我希望讨论语言不可知的过程,重点是其自身的过程。因此,如果可以的话,让我们忽略它。 1。我将预先录制我的单词词典,以使其与口语相匹配。我们可以想象我有20个录音,记录了20个不同的单词,或者说是短短语或两个或三个单词的句子。我相信,这比实际将音频转换为文本并比较两个字符串要容易,比较两个录音文件的过程更容易。 2。麦克风已连接到运行我的代码的硬件设备。[1]。该代码连续获取固定长度的样本(例如长度为10毫秒),并以循环记录方式存储例如10个连续的样本。[2]。(我是在脑海中发明这些数字的,因此它们只是描述过程的示例)。 [1]这很可能通过带通滤波器和运算放大器进行连接,就像进行字典录音一样,以保持较小的存储和收集的音频样本。 [2]我不确定要如何采样,我需要制定一种方法,尽管我会产生一个表示10毫秒采样音频(也许是CRC值)的数字(整数/浮点/双精度)或音频样本的MD5和等)或数字流(可能是频率的音频读数流)。最终,“样本”将是一个或多个数字。这部分将涉及更多的硬件,因此这里不作讨论。 3。该代码查看它存储的10个连续样本,并寻找增加的音量以指示正在说一个单词或短语(从沉默中休息),然后增加连续样本的收集量,例如说500个样本。这意味着它将在10毫秒的样本中捕获5秒的音频。 这些样本或“片段”在存储的声音和捕获的声音之间进行比较。如果捕获的样本中有足够高的百分比与存储的等效样本匹配,则代码将采用相同的词。 The start of a store recording of the world "hello" for example, stored words are split into 10 msec samples also Stored Sample No | 1| 2| 3| 4| 5| 6| 7| 8| Stored …