我有一个矢量保存音频数据,频率为48k。数据由整数组成,最大值约为4k。载体类型为<1x768000 double>。当我用这个向量类型构建我的播放器时,如下所示:
a1 = audioplayer(A,48000);
a1.play();结果音频很有噪音,比如信噪比值小于1(这意味着噪声的数量高于我想要听到的东西)。
但是,当我将数据转换为int16并播放声音时,如下所示:
a2 = audioplayer(int16(A),48000);
a2.play();结果音频非常平滑,信噪比类似于7-8或什么东西(没有测量或计算,噪声几乎是不可检测的,但这是肯定的)。
所以我的问题是:在matlab中使用audioplayer时,double和int16有什么不同?
PS:如果你愿意的话,我可以提供A。
PS2:A包含语音和一点噪音(不是一种特殊的类型,可能是因为麦克风不好等原因)。像往常一样。
发布于 2013-03-18 15:35:15
在API上找到答案。根据音频播放器API,当输入为双类型时,接受介于-1和1之间的值。当我第一次在双类型中使用它时,它没有在-1和1之间适当地缩放值,只是尝试播放它们。而不是仅仅使用原始值A,缩放之前,解决了问题。
a3 = audioplayer(A/max(abs(A)),48000);
a3.play();适当地缩放矢量。它就像
a2 = audioplayer(int16(A),48000);
a2.play();https://stackoverflow.com/questions/15474547
复制相似问题