【问题标题】:Using soundsc in Octave, on Windows 7在 Windows 7 上的 Octave 中使用soundsc
【发布时间】:2011-04-15 11:44:21
【问题描述】:

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

【问题讨论】:

    标签: octave


    【解决方案1】:

    您链接到的文件在顶部包含文档,其中包括以下内容:

    ## 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。从您发布的 sn-p 往下看几行,看起来文件将该变量传递给 popen,它应该启动一个新进程。我从来没有在 Windows 机器上的 Octave 上做过类似的事情,所以我无法帮助你了解具体细节。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我认为,虽然我不确定,但代码希望将音频数据传递给管道,而不是作为文件(参见 fwrite 行)。我不知道 Winamp 等是否可以处理。但是,我也不知道sox 在 Windows 上的行为是否符合预期。
      • 我只是在谈论播放音频。对于此模块提供的任何其他内容,是的,您需要安装 sox。您应该考虑支持/接受 mtrw 的答案,这在这方面已经死了。
      【解决方案3】:

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

      1. 下载并安装sox for Win32: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
      

      希望对您有所帮助:-)。

      【讨论】:

        【解决方案4】:

        我不相信所有的音频播放器都能正常工作。他们必须能够通过标准输入的管道播放 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-10-25
          • 1970-01-01
          • 1970-01-01
          • 2016-09-20
          • 2014-10-16
          • 2012-06-17
          • 1970-01-01
          • 2012-09-15
          • 1970-01-01
          相关资源
          最近更新 更多