matlab wavrecord和wavread的问题

时间:2010-12-22 18:51:05

标签: matlab voice-recognition

我在matlab中遇到问题

我想录制一段演讲2秒然后读取录制的声音并将其绘制

我使用代码

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'尝试了很多方法,但没有任何反应。

感谢

3 个答案:

答案 0 :(得分:2)

函数WAVRECORD不会将数据写入文件,它只返回new_wav的数据向量,因此这个变量就是你应该绘制的。函数WAVREAD从文件中读取数据,因此它需要一个字符串作为输入。这就是你得到的错误的根源。

如果要将WAVRECORD中的数据保存到文件,则需要使用WAVWRITE函数。

答案 1 :(得分: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);

答案 2 :(得分:0)

最后这是完整的代码:)

%录制您的声音5秒钟。

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

%播放录音。

play(recObj);

%将数据存储在双精度数组中。

myRecording = getaudiodata(recObj);

%绘制波形。

plot(myRecording);