2010-09-22 6 views
3

Très bien, j'ai des difficultés à démarrer sur celui-ci. Je suis en train d'utiliser la fonction soundsc dans Octave, mais je continue à obtenir cette erreur:Utilisation de soundsc dans Octave, sous Windows 7

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

J'ai cherché autour de certains sur le net mais ne pouvait pas savoir quoi faire. Voici un lien vers le code source du fichier que j'ai trouvé sur le net qui contient l'erreur: http://octave-audio.sourcearchive.com/documentation/1.1.3/sound_8m-source.html

L'erreur que je pense vient d'ici:

## 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 

Je viens donc arriver à utiliser Windows 7, donc je suppose que je dois spécifier le chemin en quelque sorte moi-même? Changer le code source? Je n'ai aucune idée de ce que je suis supposé faire pour que ça marche! Quelqu'un peut-il me dire?

Répondre

3

Le fichier lié à la documentation comprend au sommet, qui comprend les éléments suivants:

## This function writes the audio data through a pipe to the program 
## "play" from the sox distribution. 

Vous devez installer sox, pour commencer. Cela comprend play.exe. Ensuite, vous devez soit définir la valeur de la variable globale sound_play_utility dans Octave pour indiquer où vous avez installé sox, soit vous assurer que les éléments file_in_path(EXEC_PATH) peuvent trouver play.exe. En regardant quelques lignes à partir de l'extrait que vous avez posté, il semble que le fichier passe cette variable à popen, qui est censé lancer un nouveau processus. Je n'ai jamais rien fait de tel sur Octave sur une machine Windows, donc je ne peux pas vous aider sur les détails exacts.

1

Vous pouvez essentiellement voir ce que vous avez à faire en regardant simplement le code. Le module Octave vérifie d'abord si vous définissez le sound_play_utility global sur un utilitaire que vous souhaitez utiliser pour lire les sons. C'est vraiment votre choix, en fait, tout lecteur audio sur Windows devrait fonctionner (mplayer, foobar, Winamp, quoi que ce soit vraiment). Ce n'est que si cette variable est vide que les autres vérifications échouent, il suffit donc d'exporter un global et de le définir sur le chemin d'un lecteur que vous avez installé.

+0

Je pense, même si je ne suis pas sûr, que le code s'attend à transmettre les données audio à un canal, pas en tant que fichier (voir les lignes 'fwrite'). Je ne sais pas si Winamp etc. peut gérer cela. Mais alors, je ne sais pas non plus si 'sox' se comportera comme prévu sur Windows. – mtrw

+0

Je parlais juste de jouer de l'audio. Pour toute autre chose que ce module offre, oui, vous devez installer sox. Vous devriez envisager d'upvoting/acceptant la réponse de mtrw, qui est morte à cet égard. –

6

Je ne sais pas si cela fonctionne pour Windows 7 aussi, mais comment je réussi à soundsc, sox et octave fonctionnant sous Windows XP: En supposant que vous avez OCTAVE déjà installé,

  1. Télécharger et installez sox pour Win32:
  2. Allez dans le répertoire où vous avez installé (C: ". IMPORTANT: Vous devez supprimer l'extension de fichier ".exe"! Assurez-vous que vous avez défini les paramètres dans l'explorateur pour afficher les extensions de fichier.
  3. début Octave avec le paramètre de ligne de commande --exec-path C: \ sox-14-3-1 (Ou quel que soit le chemin d'accès que vous avez choisi d'installer). (Si vous utilisez qtoctave comme interface graphique, vous pouvez définir cela aussi dans les réglages dans l'onglet « Octave » dans les paramètres sous « arguments Octave »)

Maintenant octave devrait trouver le « jouer » exécutable pour jouer des sons .

Vous pouvez l'essayer avec le code suivant, qui devrait produire des signaux sonores laids de

% 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 

Hope that helps :-).

+1

Cela a fonctionné pour moi –

+0

A travaillé pour moi aussi - merci beaucoup! – HanClinto

1

Je ne crois pas que tous les lecteurs audio fonctionneront. Ils doivent être capables de lire les fichiers AU via une pipe à l'entrée standard. Voici les commandes d'Octave, que j'utilise pour activer la lecture via VLC. Vous devrez peut-être ajuster le chemin d'accès au programme VLC dans la variable VLC_PROGRAM.

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; 

Je recommande de placer ces commandes dans votre fichier de démarrage .octaverc afin que votre lecteur son est automatiquement configuré chaque fois que vous démarrez Octave.