3

好吧,我在开始这个时遇到了麻烦。我正在尝试在 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,所以我想我必须以某种方式指定路径吗?更改源代码?我不知道我该怎么做才能让它工作!谁能告诉我?

4

4 回答 4

6

我不知道这是否也适用于 Windows 7,但这就是我设法在 Windows XP 上运行 soundsc、sox 和 octave 的方法:假设您已经安装了 octave,

  1. 下载并安装用于 Win32 的 sox:http://sox.sourceforge.net/
  2. 转到您安装 sox 的目录(例如 C:\sox-14-3-1),复制“sox.exe”并将该副本重命名为“play”。重要提示:您必须删除“.exe”文件扩展名!确保您已在资源管理器中设置设置以显示文件扩展名。
  3. 使用命令行参数 --exec-path C:\sox-14-3-1 (或您选择将 sox 安装到的任何路径)启动 Octave。(如果您使用 qtoctave 作为 GUI,您也可以在“Octave arguments”下的设置中的“Octave”选项卡的设置中进行设置)

现在 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

希望有帮助:-)。

于 2010-09-30T20:25:07.067 回答
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 上做过类似的事情,所以我无法帮助你了解确切的细节。

于 2010-09-22T00:22:16.037 回答
1

您基本上可以通过查看代码来了解您必须做什么。Octave 模块首先检查您是否将全局设置为sound_play_utility要用于播放声音的实用程序。这确实是您的选择,实际上,Windows 上的任何音频播放器都应该可以工作(mplayer、foobar、Winamp 等等)。

只有当这个变量为空时,其他检查才会失败,所以只需导出一个全局并将其设置为您已安装的播放器的路径。

于 2010-09-22T00:22:56.457 回答
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 时自动配置您的声音播放器。

于 2012-03-07T15:09:05.430 回答