matlab输出pcm格式文件

用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.
加重部分是否出现了错误。

喜欢的话,或者解决了您的问题的话请帮忙点个赞或者留言,

您的支持是我写文的动力,谢谢!!!?

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值