首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matlab中使用扩音器与int16的区别是什么?

在matlab中使用扩音器与int16的区别是什么?
EN

Stack Overflow用户
提问于 2013-03-18 10:27:24
回答 1查看 465关注 0票数 1

我有一个矢量保存音频数据,频率为48k。数据由整数组成,最大值约为4k。载体类型为<1x768000 double>。当我用这个向量类型构建我的播放器时,如下所示:

代码语言:javascript
运行
复制
a1 = audioplayer(A,48000);
a1.play();

结果音频很有噪音,比如信噪比值小于1(这意味着噪声的数量高于我想要听到的东西)。

但是,当我将数据转换为int16并播放声音时,如下所示:

代码语言:javascript
运行
复制
a2 = audioplayer(int16(A),48000);
a2.play();

结果音频非常平滑,信噪比类似于7-8或什么东西(没有测量或计算,噪声几乎是不可检测的,但这是肯定的)。

所以我的问题是:在matlab中使用audioplayer时,double和int16有什么不同?

PS:如果你愿意的话,我可以提供A

PS2:A包含语音和一点噪音(不是一种特殊的类型,可能是因为麦克风不好等原因)。像往常一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-18 15:35:15

在API上找到答案。根据音频播放器API,当输入为双类型时,接受介于-1和1之间的值。当我第一次在双类型中使用它时,它没有在-1和1之间适当地缩放值,只是尝试播放它们。而不是仅仅使用原始值A,缩放之前,解决了问题。

代码语言:javascript
运行
复制
a3 = audioplayer(A/max(abs(A)),48000);
a3.play();

适当地缩放矢量。它就像

代码语言:javascript
运行
复制
a2 = audioplayer(int16(A),48000);
a2.play();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15474547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档