在录制语音时在 Matlab 中播放 wav
Posted
技术标签:
【中文标题】在录制语音时在 Matlab 中播放 wav【英文标题】:wav playback in Matlab while recording speech 【发布时间】:2014-04-05 17:58:01 【问题描述】:我在录制 5 秒钟的语音时遇到问题。我已经使用 play() 函数成功播放了,但是一旦我播放了保存在桌面上的 wav 文件,它就只是静默。 这是代码
clc,clear;
% Record your voice for 5 seconds.
%recObj = audiorecorder;
recObj = audiorecorder(96000, 16, 1);
disp('Start speaking.')
recordblocking(recObj,5);
disp('End of Recording.');`enter code here`
% Play back the recording.
play(recObj);
myspeech = getaudiodata(recObj,'double');
wavwrite(double(myspeech),'C://Users//naveen//Desktop//unprocessed')
% Store data in double-precision array.
myRecording = getaudiodata(recObj);
% Plot the samples.
figure,plot(myRecording),title('Original Sound');
【问题讨论】:
我认为wavwrite的默认采样率为8000Hz,你的录音设置为96000Hz,试试wavwrite(double(myspeech),96000,'C:/...snip...
或 recObj = audiorecorder(8000, 16, 1)
;
非常感谢..我尝试了 wavwrite(double(myspeech),96000,'C:/...snip... 并且成功了。现在我可以清楚地听到录制的声音了。谢谢
ok 生病添加是一个答案!
【参考方案1】:
wavwrite
在没有指定采样率的情况下被调用,默认为 8000Hz
但是,在您拨打 audiorecorder
时,录音设置为 96000Hz
audiorecorder(96000, 16, 1);
将这两个更改为匹配应该可以解决问题,因此将任一调用更改为以下任一调用
recObj = audiorecorder(8000, 16, 1)
wavwrite(double(myspeech),96000,'C:/...snip...
作为补充说明,我认为myspeech
已经是两倍(如getaudiodata
中所述)
所以wavwrite(myspeech,96000,'C:/...snip...
应该也能正常工作!
【讨论】:
以上是关于在录制语音时在 Matlab 中播放 wav的主要内容,如果未能解决你的问题,请参考以下文章
Python 调用pyaudio库录制以及播放wav音频文件
matlab 使用 audioread sound 读取和播放 wav 文件