CMU Sphinx 可以设置为识别约 200 个单词吗

Posted

技术标签:

【中文标题】CMU Sphinx 可以设置为识别约 200 个单词吗【英文标题】:Can CMU Sphinx be set up to recognize ~200 words 【发布时间】:2012-02-22 20:04:33 【问题描述】:

我有一个客户需要一个可以识别语音命令的 android 应用。据我了解,内置的语音到文本功能实际上将数据发送到谷歌的服务器,然后再发回文本翻译。这是一个主要问题,因为语音数据非常敏感(除非数据在发送到 Google 或从 Google 发送时已加密 - 但我怀疑它是否已加密)。

我能想到的有 2 个选项。首先是在 Android 上将语音转换为文本,尽管这似乎是一项极其昂贵的操作。第二种可能性是让本地服务器为我转换数据(我可以在发送和接收语音数据时加密语音数据和翻译)。这是 CMU Sphinx 可以实现的吗?值得注意的是,我还可以访问 Asterisk 服务器,这可能有助于解决这个问题(我不知道)。

实际上,应该只有大约 200 个单词需要被识别。我更喜欢开源/免费软件解决方案,但我也对商业解决方案(可能是 FlexT9)持开放态度。理想情况下,我可以将音频流发送到某个地方,取回作为文本的字符串,然后我可以解析该字符串并做其他事情。

我过去没有做过太多的 android 或任何语音识别开发,所以我希望至少有人能指出我正确的方向。谢谢!

【问题讨论】:

【参考方案1】:

CMUSphinx 是一个开源语音识别工具包,您可以使用它来构建您的应用程序。它包含使您能够构建语音应用程序的工具、库和数据。您可以在上面的网站上了解有关 CMUSphinx 的更多信息。

在 Android 上,您有多种使用 CMUSphinx 的选项:

    识别设备上的音频。为此,您可以为 android 编译 Pocketsphinx 引擎。详情see this blog post。

    识别服务器上的音频。作为服务器,您可以使用 Pocketsphinx 或 Sphinx4。您可以发送压缩的 flac 格式的音频或在设备上提取语音识别特征并将特征流发送到服务器。

CMUSphinx 为您提供了多种声学模型,可让您识别多种语言的音频,例如英语、法语、普通话、德语、荷兰语、俄语。

您还可以使用适配工具提高识别结果。

如果您对 CMUSphinx 有任何疑问,欢迎联系ask in our community forums。

【讨论】:

【参考方案2】:

Microsoft 语音引擎是闭源但免费的。有关一些背景信息,请参阅What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?。更多背景知识可以试试https://***.com/a/4217638/90236

Microsoft Server Speech Platform 11 的完整 SDK 可在 http://www.microsoft.com/download/en/details.aspx?id=27226 获得。语音引擎可免费下载。

【讨论】:

微软的解决方案是否也适用于 Android(您建议的那个)? 它只是一个服务器端组件。您必须构建自己的客户端实现来捕获音频并将其发送到服务器。

以上是关于CMU Sphinx 可以设置为识别约 200 个单词吗的主要内容,如果未能解决你的问题,请参考以下文章

有没有人成功使用 CMU Sphinx 进行语音识别编程

PocketSphinx语音识别系统的编译安装和使用

语音识别spinx4切换中文模型时报错IndexOutOfBoundsException

sphinx4 中的语音识别响应很差

在 Sphinx4 中将语音解码为音素

如何让 sphinx 识别装饰的 python 函数