轉換音頻采樣率


對於采樣率,相信很多人知道這個詞卻不知道是什么意思。

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

從實際效果簡單來說,采樣率會影響播放速度,采樣率越高播放速度越快。如果你以44.1k的采樣率去播一個只有8k采樣率的音頻,估計很快就播完了。所以,由於並不是所有音頻的采樣率都是統一的,就會涉及到一個采樣率轉換的問題,在這里給大家介紹一個庫,JSSRC。

這里是github地址:https://github.com/hutm/JSSRC

里面的類也不是所有都需要用到,只需要SSRC,I0Bessel,SplitRadixFft這三個類就可以實現轉換采樣率的功能。

然后用下面這個方法就可以轉換采樣率了:

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就是目標采樣率,可以從低轉到高,也可以高轉低。

轉換采樣率的方法還有很多,只是我覺得這個方法比較簡單,希望會對大家有幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM