用cooledit打开的话,要用matlab输出为PCM格式。
在matlab中输出pcm格式要怎么做呢?
用法: fwrite(fileid,参数,格式);
为了用cooledit正确地打开,我们应该要用二进制输出。
要如何输出和你的源文件有关,请仔细阅读下文。很短的。
我的这个文件的格式是:
是一个wav文件,
用audioread读取。
filename=\'10.wav\';%这个声音文件在该程序根目录
[signal,fs] = audioread(filename);%读取wav文件,读完是去除了文件头的采样点,而且归一化了,是浮点数。
info=audioinfo(filename)%看这个文件的信息。
whos signal%显示name size bytes class 等等
如果希望看原来的数值,就用
[signal,fs] = audioread(filename,‘native’);
这里的native就是表示按照原格式读取。
读完之后如何写呢。
%% 保存raw文件
temp=x_speech.*65536/2;%这里是把归一化信号还原,如果是native读取,就不用了/
fid=fopen(\'D:\lab1\10.pcm\',\'wb\');%存为raw,也就是pcm格式
fwrite(fid,temp,\'int16\');%我这里是按照int16读取的,所以是int16.
%想看自己读完是什么格式,可以在调试的时候点开signal数组看。
audiowrite(\'D:\lab1\10new.wav\', x_speech,fs);%这是存成wav格式的
fclose(fid);
最后可以看到这样的一个文件:
用cooledit打开的话,是正常的。
如果语音是杂音,或者乱七八糟的声音,
那么肯定是没有按照二进制输出,请检查
您的matlab代码中
fid=fopen(‘D:\lab1\10.pcm’,‘wb’);%存为raw,也就是pcm格式
fwrite(fid,temp,‘int16’);%我这里是按照int16读取的,所以是int16.
加重部分是否出现了错误。
请发表评论