2010-12-22 4 views
2

내가 MATLAB에서 문제가 wavread 내가 2 초 후 녹음 된 사운드를 읽고는matlab에 wavrecord 문제와

내가 코드를 사용 플롯에 대한 연설을 녹음 할

FS = 8000;  
new_wav = wavrecord(2*FS,FS,'int16'); 
x = wavread(new_wav); 
plot(x); 

하지만 오류가 내가 제대로 사운드 파일을 기록 그려지

??? Error using ==> fileparts at 20 
Input must be a row vector of characters. 

Error in ==> wavread>open_wav at 193 
[pat,nam,ext] = fileparts(file); 

Error in ==> wavread at 65 
[fid,msg] = open_wav(file); 

Error in ==> test at 2 
x = wavread(new_wav); 

하지만 때 내가 원하는 나타납니다 이 오류가 발생 matlab을 통해 새로운 하나를 기록합니다.

FS 및 'int16'을 변경하여 여러 방법을 시도했지만 아무 일도 발생하지 않았습니다.

감사

답변

2

기능 WAVRECORD는 단지 new_wav에 대한 데이터 벡터를 반환하므로이 변수는 음모를 꾸미고해야한다 무엇을, 데이터를 파일에 기록하지 않습니다. 함수 WAVREAD은 데이터 을 파일에서 읽으므로 입력 문자열이 필요합니다. 그것이 당신이 겪고있는 오류의 근원입니다.

WAVRECORD의 데이터를 파일로 저장하려면 WAVWRITE 함수를 사용해야합니다. 끝에

0
name = input('Enter Your Name ','s'); 
file = sprintf('%s%s.wav','train - ',name); 
input ('You have 2 seconds to a word. Press enter when ready ') 
y = wavrecord (2*fs,fs); 
wavwrite(y,fs,file); 
+0

코드를 사용해도 오류가 발생했습니다 ... wavwrite> OpenWaveWrite (169 행)를 사용하는 동안 오류가 발생했습니다. 파일을 열 수 없습니다. 이유 : 사용 권한이 거부되었습니다 wavwrite 오류 (줄 95) fid = OpenWaveWrite (wavefile); – bla

0

이 전체 코드 :

퍼센트의 기록을 5 초 동안 음성이다.

recObj = audiorecorder; 
disp('Start speaking.') 
recordblocking(recObj, 3); 
disp('End of Recording.'); 

% 녹음을 재생하십시오.

play(recObj); 

% 데이터를 배정 밀도 배열로 저장하십시오.

myRecording = getaudiodata(recObj); 

% 파형을 플롯합니다.

plot(myRecording);