2016-11-09 1 views
1

I Essayer de sauvegarder ma voix enregistrée. Quand j'appuie sur le bouton 'sauvegarder', l'audio enregistré doit être enregistré dans un fichier .wav. Mais ce n'est pas le cas. Ceci est le code que j'ai jusqu'à présent ...Enregistrer l'audio enregistré

bouton Enregistrer ...

function recordbutton_Callback(hObject, eventdata, handles) 
% hObject handle to recordbutton (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
rec = audiorecorder 
disp('Recording for 5 Seconds...') 
recordblocking (rec,5); %5 Seconds 
disp('Finished Recording.') 

global myrecording 
myrecording = getaudiodata(rec); 

axes(handles.axes3); 
plot(myrecording) 

bouton Enregistrer ...

% --- Executes on button press in saverecording. 
function saverecording_Callback(hObject, eventdata, handles) 
global myrecording 
audiowrite(myrecording, 'RecordedSound.wav'); 
+0

Quel est le problème que vous rencontrez? votre code ne fonctionne pas? Est-ce incomplet? – zhqiat

+0

Lorsque j'appuie sur le bouton «Sauvegarder», l'audio enregistré doit être sauvegardé dans un fichier .wav. Mais ce n'est pas le cas. –

+0

Qu'est-ce qui * arrive *? Avez-vous un fichier .wav vide? Êtes-vous sûr que le rappel est appelé? Est-ce que myrecording contient les données que vous pensez faire à ce moment-là si vous l'examinez pendant le débogage? Avez-vous essayé la commande 'audiowrite' à la console de débogage par elle-même pour voir si cela fonctionne comme prévu? –

Répondre

1

On dirait que vous avez un guide variable de problème de cadrage. Je crois que la meilleure pratique consiste à utiliser guidata plutôt que d'essayer d'utiliser des variables globales. mathworks Q&A here.

Deuxièmement votre code audiowrite est appelé d'une autre manière (au moins sur mon système) De MathWorks help here, audiowrite(filename,y,Fs) prend un nom de fichier, le son, puis la fréquence des entrées. En mettant tout cela ensemble, il y a un peu de changement dans votre code, mais cela va enregistrer un fichier wav avec deux boutons.

function recordbutton_Callback(hObject, eventdata, handles) 
rec = audiorecorder 
disp('Recording for 5 Seconds...') 
recordblocking (rec,5); %5 Seconds 
disp('Finished Recording.') 
handles.myrecording = getaudiodata(rec); 
guidata(hObject, handles); %writes the handles structure back to the guiframe. 

Votre fonction de sauvegarde doit être écrit comme ceci

function Save_Callback(hObject, eventdata, handles) 
% hObject handle to Save (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
handles.myrecording % check to make sure handles.myrecording actually has data 
audiowrite('RecordedSound.wav',handles.myrecording, 44100); 

Il n'y a pas besoin d'écrire le guidata retour dans la sauvegarde, sauf si vous voulez supprimer l'enregistrement pour libérer de la mémoire.