3

わかりました、これを開始するのに問題があります。Octave で soundsc 関数を使用しようとしていますが、次のエラーが発生し続けます。

error: sound.m: No command line utility found for sound playing

ネットでいろいろ調べたのですがどうすればいいのかわかりません。エラーを含むネット上で見つけたファイルのソース コードへのリンクは次のとおりです。

私が思うエラーはここから来ています:

  ## 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 で soundc、sox、および 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 として使用している場合は、「オクターブ引数」の設定の「オクターブ」タブの設定でもこれを設定できます)

これで、オクターブはサウンドを再生するための「play」実行可能ファイルを見つけるはずです。

次のコードで試すことができます。これにより、醜いビープ音が発生するはずです;-)

% 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.exesound_play_utility次に、インストールした場所を反映するようにOctaveでグローバル変数の値を設定soxするか、file_in_path(EXEC_PATH)スタッフがを見つけることができることを確認する必要がありますplay.exe。投稿したスニペットから数行下を見ると、ファイルがその変数をpopenに渡しているように見えます。これは、新しいプロセスを起動することになっています。私はWindowsマシンのOctaveでそのようなことをしたことがないので、正確な詳細についてはお役に立てません。

于 2010-09-22T00:22:16.037 に答える
1

すべてのオーディオプレーヤーが機能するとは思いません。標準入力へのパイプを介してAUファイルを再生できる必要があります。これがオクターブコマンドです。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;

.octavercOctaveを起動するたびにサウンドプレーヤーが自動的に設定されるように、これらのコマンドをスタートアップファイルに配置することをお勧めします。

于 2012-03-07T15:09:05.430 に答える
1

基本的に、コードを見るだけで何をしなければならないかがわかります。sound_play_utilityOctave モジュールは、サウンドの再生に使用するユーティリティにグローバルが設定されているかどうかを最初にチェックします。これは本当にあなたの選択です。実際には、Windows のオーディオ プレーヤーはどれでも動作するはずです (mplayer、foobar、Winamp など)。

この変数が空の場合にのみ、他のチェックが失敗するため、グローバルをエクスポートして、インストールしたプレーヤーのパスに設定するだけです。

于 2010-09-22T00:22:56.457 に答える