【发布时间】:2011-01-18 16:52:25
【问题描述】:
在pocketshpinx 上运行用sphinx4 编写的程序最简单的方法是什么? 我需要可以在各种移动平台上使用的东西,比如 iphone 和 android 手机。 我已经在 Java 中用 sphinx4 编写了演示,但现在我需要它们是用 C 编写的。
谢谢:)
【问题讨论】:
在pocketshpinx 上运行用sphinx4 编写的程序最简单的方法是什么? 我需要可以在各种移动平台上使用的东西,比如 iphone 和 android 手机。 我已经在 Java 中用 sphinx4 编写了演示,但现在我需要它们是用 C 编写的。
谢谢:)
【问题讨论】:
来自官方文档
sphinx4 的灵活性让您可以快速构建这样的系统。它是 易于将 sphinx4 嵌入到 red5 等 Flash 服务器中,以提供基于 Web 的 识别,很容易管理许多 sphinx4 实例 在集群上进行大规模解码。
另一方面,如果您的系统需要高效且合理 准确,如果您在嵌入式设备上运行或者您有兴趣 在使用带有一些异国语言(如 Erlang)的识别器时, 口袋狮身人面像是您的选择。 Java很难与 JVM pocketsphinx 不支持的其他语言在这里更好。
总结
【讨论】:
TL;DR - 使用 pocketshpinx
如果您计划在多个平台上开发应用程序,请使用 C 库。 Android(通过 NDK)和 iOS(本机)都支持加载和调用 C 库。 iOS 上没有 JVM,因此,您将无法在 iOS 上使用 sphinx。
为了节省时间,pocketphinx-android-demo github repo 为所有相关平台预编译了 pocketsphinx 库 - https://github.com/cmusphinx/pocketsphinx-android-demo/tree/master/app/src/main/jniLibs
使用 C/C++ 库,您可以获得性能和可移植性(您必须针对 arm 和 x86 进行编译)。这是 Dropbox, Inc. 关于他们如何使用 C++ 编写多平台应用程序的演讲。 https://www.youtube.com/watch?v=ZcBtF-JWJhM
【讨论】:
如果您为 pocketsphinx 编写了一个 JNI 包装器,那么您可以在您的 java 代码中使用它。
pocketsphinx 也有 python 语言绑定。
如果你想要一个 C 语言语音识别器,你应该使用 pocketsphinx 的语音识别器(而且它的设计速度也足够快,可以在手机上工作)。
【讨论】:
Sphinx4 和 PocketShpinx 在实现方面完全不同,您必须重写演示,或者更糟糕的是,PocketSphinx 可能不支持它们。如果您使用某些 Sphinx4 高级功能,就会发生这种情况。
【讨论】: