如何运行OSS依赖的应用程序?“/dev/dsp”

如何运行OSS依赖的应用程序?“/dev/dsp”

我正在使用 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 共存?)

相关内容