Matlab 在+;30分贝
据我所知,当我使用命令将wav文件加载到matlab时:Matlab 在+;30分贝,matlab,audio,Matlab,Audio,据我所知,当我使用命令将wav文件加载到matlab时: song=wavread('file.wav') 数组中的元素的值介于-1到1之间。这个文件(和硬件)准备用80dB播放。我需要增加+30dB以实现110dB。 我通过乘以sqrt(10)得到+10dB,所以要得到+30dB,我需要: song=song*10*sqrt(10)这与 song=song*sqrt(10)*sqrt(10)*sqrt(10) 现在数组song的值比-1比1大得多,我听到了失真的声音。 是因为该值大于或高于我的
song=wavread('file.wav')代码>
数组中的元素的值介于-1到1之间。这个文件(和硬件)准备用80dB播放。我需要增加+30dB以实现110dB。
我通过乘以sqrt(10)得到+10dB,所以要得到+30dB,我需要:
song=song*10*sqrt(10)代码>这与
song=song*sqrt(10)*sqrt(10)*sqrt(10)代码>
现在数组song的值比-1比1大得多,我听到了失真的声音。
是因为该值大于或高于我的扬声器/耳机的质量吗?失真是因为您的值超过+/-1。浮点值转换为ADC计数,其为+/-32768(对于16位ADC)或+/-8388608(对于右对齐的24位ADC)或+/-2147483648(对于左对齐的24位ADC)。对于16位ADC,这通常通过如下操作完成:adcSample=(short int)(32768.0*floatSample)。如果floatSample
为>+1或<-1,这将导致短int型中的wrapparound,这就是您听到的失真。强制转换是必要的,因为ADC需要16位数字采样
您需要调整放大器/扬声器设置以获得所需的音量
相反,您可以创建文件副本,将其降低30 dB,调整放大器/扬声器以80 dB播放新文件,然后以相同的放大器/扬声器设置播放原始文件。这将导致以110 dB的速度播放原始文件
正如Paul R在其评论中所指出的,我猜您在这里使用的是dB
作为dB SPL
的简写,指的是整个信号链产生的实际模拟声级。大多数音频文件的“净空”非常小,假设它们已被正确录制,所以,如果你试着让声音更大,你只会得到剪辑和失真。而且你可能会对分贝感到困惑。dB只是一个比率,但它经常被用作相对于某些隐含参考的比率,例如,dB SPL
通常用于声级,它表示相对于0 dB SPL参考压力的响度。我将尝试以110 dB播放原始文件。非常感谢。