轉換音頻採樣率

對於採樣率,相信不少人知道這個詞殊不知道是什麼意思。java

官方解釋:採樣頻率,也稱爲採樣速度或者採樣率,定義了每秒從連續信號中提取並組成離散信號的採樣個數,它用赫茲(Hz)來表示。採樣頻率的倒數是採樣週期或者叫做採樣時間,它是採樣之間的時間間隔。通俗的講採樣頻率是指計算機每秒鐘採集多少個聲音樣本,是描述聲音文件的音質、音調,衡量聲卡、聲音文件的質量標準。git

從實際效果簡單來講,採樣率會影響播放速度,採樣率越高播放速度越快。若是你以44.1k的採樣率去播一個只有8k採樣率的音頻,估計很快就播完了。因此,因爲並非全部音頻的採樣率都是統一的,就會涉及到一個採樣率轉換的問題,在這裏給你們介紹一個庫,JSSRC。github

這裏是github地址:https://github.com/hutm/JSSRCblog

裏面的類也不是全部都須要用到,只須要SSRC,I0Bessel,SplitRadixFft這三個類就能夠實現轉換採樣率的功能。it

而後用下面這個方法就能夠轉換採樣率了:io

private void simpleDownSample() {
        File BeforeSampleChangedFile = new File(BeforeSampleChangedFilePath);
        File SampleChangedFile = new File(SampleChangedFilePath);
        try {
            FileInputStream fileInputStream = new FileInputStream(BeforeSampleChangedFile);
            FileOutputStream fileOutputStream = new FileOutputStream(SampleChangedFile);
            new SSRC(fileInputStream, fileOutputStream, 8000, 44100,
                    2,
                    2,
                    1, Integer.MAX_VALUE, 0, 0, true);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

  其中8000就是待轉換的採樣率,44100就是目標採樣率,能夠從低轉到高,也能夠高轉低。class

轉換採樣率的方法還有不少,只是我以爲這個方法比較簡單,但願會對你們有幫助音頻

相關文章
相關標籤/搜索