好吧,我在开始这个问题上遇到了麻烦。我试图在Octave中使用soundsc函数,但我一直收到这个错误:
error: sound.m: No command line utility found for sound playing
我在网上搜索了一些但却找不到该做什么。这是我在网上找到的包含错误的文件源代码的链接:http://octave-audio.sourcearchive.com/documentation/1.1.3/sound_8m-source.html
我认为错误来自:
## What do we use for playing?
global sound_play_utility;
if ~isempty(sound_play_utility),
## User specified command
elseif (file_in_path(EXEC_PATH, "ofsndplay"))
## Mac
sound_play_utility = "ofsndplay -"
elseif (file_in_path(EXEC_PATH, "play"))
## Linux (sox)
sound_play_utility = "play -t AU -";
else
error("sound.m: No command line utility found for sound playing");
endif
我恰好正在使用Windows 7,所以我想我必须以某种方式指定自己的路径?更改源代码?我不知道我想要做些什么才能让它发挥作用!有谁能告诉我?
答案 0 :(得分:6)
我不知道这是否适用于Windows 7,但这就是我设法在Windows XP上运行soundsc,sox和octave的方法: 假设你已经安装了八度,
现在,八度音程应该找到播放声音的“播放”可执行文件。
您可以使用以下代码尝试它,这会产生一些丑陋的哔哔声; - )
% Sampling theorem - mirror frequency
% s3s11_1.m * mw * 11/17/2007
FS = 8000; % sampling frequency in Hz
t = 0:1/FS:1; % normalized time
x = [];
for k = 1:7
x = [x sin(2*pi*k*1e3*t)]; % signal 1...7 kHz
end
soundsc(x,FS) % sound
希望有所帮助: - )。
答案 1 :(得分:3)
您链接的文件包含顶部的文档,其中包括以下内容:
## This function writes the audio data through a pipe to the program
## "play" from the sox distribution.
所以你需要为初学者安装sox。这将包括play.exe
。然后,您必须在Octave中设置全局变量sound_play_utility
的值以反映您安装的位置sox
,或确保file_in_path(EXEC_PATH)
内容可以找到play.exe
。从您发布的代码片段向下看几行,看起来文件将该变量传递给popen
,这应该启动一个新进程。我从未在Windows机器上做过类似Octave的事情,所以我无法帮助你了解具体细节。
答案 2 :(得分:1)
通过查看代码,您基本上可以看到您需要做的事情。 Octave模块首先检查您是否将全局sound_play_utility
设置为要用于播放声音的实用程序。这真的是你的选择,实际上,Windows上的任何音频播放器都应该工作(mplayer,foobar,Winamp,无论如何)。
只有当此变量为空时,其他检查才会失败,因此只需导出全局并将其设置为已安装的播放器的路径。
答案 3 :(得分:1)
我不相信所有音频播放器都能正常工作。他们必须能够通过管道将AU文件播放到标准输入。以下是Octave命令,我用它来启用VLC播放。您可能需要在VLC_PROGRAM
变量中调整VLC程序的路径。
VLC_PROGRAM="c:/Program Files (x86)/VideoLan/VLC/vlc";
VLC_OPTIONS="-q --play-and-exit -";
sound_play_utility=["cmd /c \"" VLC_PROGRAM "\" " VLC_OPTIONS];
clear VLC_PROGRAM VLC_OPTIONS;
我建议将这些命令放在.octaverc
启动文件中,以便每次启动Octave时自动配置声音播放器。