我正在使用 ubuntu 12.04 LTS-声音效果良好。
我尝试执行 pocketsphinx 进行一些语音识别测试,但它需要 OSS 才能工作。它崩溃并显示以下消息:
ad_oss.c(103): Failed to open audio device(/dev/dsp): No such file or directory
在 Google 上搜索后,我第一次尝试修复的是安装包“oss-compat”——但是没有成功,这让我发现它只是一个误导——一个空的虚假包。
然后我尝试:
$> padsp pocketsphinx_continuous
...
ioctl(NONBLOCK) failed: Invalid argument
最后,(死了?)斯芬克斯 wiki 常见问题解答状态:
通过从包 libasound2 或 alsa-devel 安装 alsa 开发头文件来编译带有 ALSA 支持的 pocketsphinx
Alsa-devel 不存在于我的发行版中,但我已经安装了 libasound2-dev 和 gstreamer0.10-pocketsphinx - 然后重新编译了 pocketsphynx - 没有变化。
现在我没什么主意了,而且 sphynx 论坛好像也关闭了。有人吗?
答案1
仅作一些猜测:
pocketsphynx 对 ALSA 的支持没有任何变化,因为在安装了 ALSA 标头之后,您使用 编译了 pocketsphynx,
./configure
并且没有指定--prefix=/usr
为命令行选项configure
,因此它将其安装到/usr/local
路径中。/usr/bin
而是启动了 pocketsphynx 的版本,因此您安装的版本不会被选中。Pocketsphynx 的构建系统有一个标志,您必须指定该标志才能明确启用 ALSA 支持,而您没有设置该标志?尝试
./configure --help
查看是否必须指定--enable-alsa
或做其他事情。如果您仍然无法使 ALSA 支持正常工作,请尝试配置您的系统以支持 OSS Proxy。您可以从以下位置的“如何测试”说明开始:这里但跳过步骤 3 到 6。此外,您还需要单独
osspd
从源代码进行编译。osspd 的新主页位于SourceForge. 的目的osspd
是模拟真实的用户空间中的 OSS 设备使用用户空间中的字符设备(CUSE)内核模块,并通过内核将音频转发到 PulseAudio。它与程序的兼容性更高,因为某些东西(如非阻塞 I/O 和 MMAP)可以用 osspd 模拟,而不能用 libc 预加载 hack(如 或 )padsp
模拟aoss
。
答案2
我发现在 Ubuntu 上对某个特定程序进行 oss 模拟的最简单方法是安装,alsa-oss
它提供了一个aoss
命令。然后运行,aoss program
神奇地给出程序oss 仿真。
(另一种方法是安装 oss4 驱动程序,但随后您必须使用它们而不是 alsa,我认为没有什么好的方法可以让 oss4 和 alsa 共存?)