Java 查找wav文件中两个声音帧之间的差异时出现问题

Java 查找wav文件中两个声音帧之间的差异时出现问题,java,audio,wav,audio-streaming,javasound,Java,Audio,Wav,Audio Streaming,Javasound,我想比较两个声音帧有多少相似之处,这样我就可以区分它们了 我这样做是因为,通常当我们播放视频和出现广告时,声音会下降或增加 因此,我想比较wav文件中的声音帧以找出差异 下面的代码查找每个视频帧的声波振幅 1个视频帧对应2000个声音帧 代码--> for(offset=waveileheaderoffset;((offset

我想比较两个声音帧有多少相似之处,这样我就可以区分它们了

我这样做是因为,通常当我们播放视频和出现广告时,声音会下降或增加

因此,我想比较wav文件中的声音帧以找出差异

下面的代码查找每个视频帧的声波振幅

1个视频帧对应2000个声音帧

代码-->

for(offset=waveileheaderoffset;((offset
这篇文章主要是关于音乐的,但也适用于商业广告。
最有趣的部分是关于动态范围缩减

研究发现,人的听觉更喜欢“响亮”的信号而不是“微弱”的信号。

当你想卖东西的时候,这很方便。

这对你有什么显著的区别?比如当广告出现在两个视频之间时,广告中的声音幅度通常远大于视频。其次,假设有一个视频,一个人在采访另一个人。这里,声音的整体响度是相同的对于面试,除非有其他广告突然出现。我想测量这种变化。但当我使用上述代码找到振幅时,所有值都非常接近。找不到阈值来区分。也找不到错误。我认为在两个声音帧的振幅之间取差就可以了。但这不起作用ing。这无助于区分它们。使用RMS(均方根)功会发现差异吗?我们只能猜测,我怀疑我们中的任何人以前都没有尝试过这样做,唯一的方法是测试“更喜欢‘大声’的信号”——除非你宿醉或头痛,我想,或者就像平静和安静一样
for (offset=waveFileHeaderOffset; ((offset < raf.length()) && (videoFrames < VideoFile.MAX_POSSIBLE_FRAMES)); offset+=2*AUDIO_PER_FRAME) 
{
          audioAmplitude = 0.0;    
          for (offset2=0; offset2 < 2*AUDIO_PER_FRAME; offset2+=2 )
           {
                double temp = 0.0;
                raf.seek(offset+offset2);
                raf.read(bytes);
                temp = (double) Math.abs((double)( ( ( bytes[1]  << 8 ) | ( bytes[0] & 0xff ) ) / 32768.0 ));
                audioAmplitude += temp;

            }
            audioAmplitude /= AUDIO_PER_FRAME;//we are taking average of all frames corresponding to video frame

            ArrayList<Double> tempFrameData = new ArrayList<Double>();
            (VideoFile.frameHashMap.get(videoFrames).clone());
            tempFrameData.add(audioAmplitude);


            VideoFile.frameHashMap.put(videoFrames, tempFrameData);

            videoFrames++;

     }