Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 为什么.WAV文件听起来与其补码完全相同?_Audio_Wav - Fatal编程技术网

Audio 为什么.WAV文件听起来与其补码完全相同?

Audio 为什么.WAV文件听起来与其补码完全相同?,audio,wav,Audio,Wav,就是这样,我一直在玩一些C#编码,试图看看当我反转越来越多的每个样本位时,.WAV音频文件的声音会有多大的不同,但是当我到达翻转整个文件位的步骤时,我期待更多的噪音,甚至原始音频将不再清晰。但当我试着播放原始音频的补码(所有位都反转)时,我惊讶于前面步骤中的噪音(更少的位反转,并且还没有全部反转)甚至消失了,文件听起来又像原始音频一样 我想知道这背后的原因是什么。事实上,这与C#无关,而是人类对声音的感知 人耳只对其接收到的声音的强度I作出反应(更具体地说,对不同频率上的强度分布作出反应),这或

就是这样,我一直在玩一些C#编码,试图看看当我反转越来越多的每个样本位时,.WAV音频文件的声音会有多大的不同,但是当我到达翻转整个文件位的步骤时,我期待更多的噪音,甚至原始音频将不再清晰。但当我试着播放原始音频的补码(所有位都反转)时,我惊讶于前面步骤中的噪音(更少的位反转,并且还没有全部反转)甚至消失了,文件听起来又像原始音频一样


我想知道这背后的原因是什么。

事实上,这与C#无关,而是人类对声音的感知

人耳只对其接收到的声音的强度
I
作出反应(更具体地说,对不同频率上的强度分布作出反应),这或多或少类似于振幅的平方

I~A^2

改变波形的符号会改变
A
的符号,这对
I
没有影响


这是直接引用自

我猜WAV文件值是使用有符号整数存储的

请看本页:

如果将有符号整数的所有位反转,则会得到相反的值


<>你刚才创建了一个对称的波形,它和原来的声音一样。

你需要从第一个原理来处理这个问题——考虑一个采样频率为4kHz,一个采样的分辨率;纯22KHz声音的部分流将被读取为:

010101010101 010101010101 如果将所有位反转,则变为:

101010101010 101010101010 该流仍然是纯22KHz音调(尽管存在相位差)


在现实世界中,声波的形状更接近正弦波,但这一原理仍然成立——与记录的声波相反的部分似乎与原始声波更不相同。如果你在不同的立体声频道播放倒转的音乐(有一首Pitchshifter歌曲可以播放,如果你喜欢听的话,可以同时解释(2:20->2:30左右)

这与人类的声音感知有关。我们的耳朵只对不同频率的大小敏感,而对相位不敏感。翻转WAV文件的标志是180度相位变化,这是无法听到的。