0

我使用这个公式来获取信号的频率,但我不明白如何用复数实现代码?与 Math.Sqrt(-1) 相关的公式中有“i”。如何使用 NAduio 库编写此公式以在 C# 中发出信号?

在此处输入图像描述

4

3 回答 3

2

如果您想回到基本水平,那么:

您需要使用某种形式的概率模型,例如隐马尔可夫模型 (HMM)。这将允许您测试用户对一组模型所说的内容,每个模型对应一个允许他们说的单词。

此外,您希望将音频波形转换为您的程序可以更轻松地解释的东西。类似于快速傅里叶变换 (FFT) 或小波变换 (CWT)。

步骤是:

  1. 获取音频
  2. 去除背景噪音
  3. 通过 FFT 或 CWT 变换
  4. 检测音频的峰值和其他特征
  5. 将这些功能与您的 HMM 进行比较
  6. 选择具有关于阈值的最佳结果的 HMM。

当然,这需要您事先使用正确的单词训练 HMM。

于 2013-03-05T13:22:42.957 回答
2

许多语言实际上为此提供了内置的库。在 C#.NET 中的一个示例位于此链接。这为您提供了如何设置语音识别程序的分步指南。它还将您从解析某些现象等的音频的低级细节中抽象出来(坦率地说,除非您希望编写高度优化的版本,否则对于现有的库数量来说这毫无意义)。

于 2013-03-05T13:21:56.703 回答
0

尽管如此,这仍然是一个难题,您将不得不使用 ASR 框架来完成它。我使用 Sphinx4 做了一些稍微复杂的事情(约 100 个字)。您也可以使用 HTK。

一般来说,你需要做的是:

  • 写下你想识别的所有单词
  • 确定命令的语法,例如 (direction) (amount)

然后选择一个框架,得到一个声学模型,生成一个字典和一个与该框架兼容的语言模型。然后将框架集成到您的应用程序中。

我希望我已经提到了你需要做的所有重要事情。您可以单独搜索它们或转到您选择的框架的教程。

你的任务在语音识别方面比较简单,如果你完成了应该会得到不错的结果。

于 2013-03-05T13:19:57.727 回答