在Windows 7上使用Octave中的soundsc

时间:2010-09-22 00:06:40

标签: octave

好吧,我在开始这个问题上遇到了麻烦。我试图在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 个答案:

答案 0 :(得分:6)

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

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

    您可以使用以下代码尝试它,这会产生一些丑陋的哔哔声; - )

    % 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时自动配置声音播放器。