在等待了几天的许可证后,我现在有机会安装沃尔夫拉姆数学 8在家里。然而,Play
和Speak
函数都没有做任何事情,因为似乎 Mathematica 由于未知原因无法产生任何声音输出。有人知道我该如何解决这个问题吗?
答案1
Ubuntu 使用脉冲音频音响系统。它带有paplay
播放声音文件的命令。您找到的方法在 Ubuntu 维基上应该可以工作,但是您需要使用paplay
(或其他一些等效程序)而不是现在过时的 aRts。
这是一些改编自的代码Ubuntu 维基。将其添加到您的~/.Mathematica/Kernel/init.m
或它包含的文件中。除了运行paplay
而不是artsplay
,我还将其更改为管道传输数据而不是将其存储在临时文件中。未经测试。
Begin["System`Private`"]
Unprotect[$SoundDisplayFunction]
Clear[$SoundDisplayFunction]
$SoundDisplayFunction =
Module[{stream},
stream = OpenWrite["!pacat", BinaryFormat -> True];
BinaryWrite[stream, ExportString[#1, "WAV"]];
Close[stream];
] &
Protect[$SoundDisplayFunction]
End[];
也可以看看Linux下Mathematica 8.0.1没有声音,报告称类似的方法在 Mathematica 8 中也有效(使用 ALSA 而不是 PulseAudio)。
答案2
问题在于 Mathematica 版本使用 OSS,而 Ubuntu 使用 ALSA。
将以下“sound.m”脚本添加到~/.Mathematica/Kernel
:
(* ::Package:: *)
(*
* Set up a $SoundDisplayFunction for the
* Linux version of Mathematica and potentially other unixes, too.
*)
Begin["System`Private`"]
Unprotect[$SoundDisplayFunction]
Clear[$SoundDisplayFunction]
$SoundDisplayFunction :=
Module[{playCmd,soundFileName},
Export[$SoundDisplay, #1];
(* is there a way to get the sample rate, etc. from the audio
stream? *)
playCmd = "/usr/bin/play";
soundFileName = "/tmp/" <> ToString[Unique["sound"]] <> ".wav";
playCmd = playCmd <> " " <> soundFileName;
Export[soundFileName, #1, "WAV"];
Run[playCmd];
Run["/bin/rm -f " <> soundFileName];
] &
Protect[$SoundDisplayFunction]
End[];
(********************CODE ENDS***************************)
After creating 'sound.m', add the following line
to ~/.Mathematica/Kernel/init.m :
Get["sound.m"];
重新启动 Mathematica 以重新加载内核。
答案3
我有同样的问题。升级到 Mathematica 10 后,声音生成可以在 Linux 上运行。