會說話的TOM貓的原理是什么


很多網友對會說話的TOM貓的原理比較感興趣,這里Android123就實現做一個簡單的分析:

  1. 音頻采集

   這點主要是通過Android設備的麥克風實時采集音頻,由於Android平台的MediaRecorder類錄制音頻到文件,雖然可以通過空設備回調獲得實時的音頻流,不過為了降低開發者的難度,Android開發網推薦使用正統的AudioRecord和AudioTrack,首先我們仍然需要加入android.permission.RECORD_AUDIO這個權限。

  android.media.AudioRecord類的read方法主要有3種重載形式:

int  read(short[] audioData, int offsetInShorts, int sizeInShorts)   //short在java中占用兩個字節
int  read(byte[] audioData, int offsetInBytes, int sizeInBytes)  //byte在java中占用一個字節
int  read(ByteBuffer audioBuffer, int sizeInBytes)  //基於NIO的ByteBuffer類型

  我們可以看到從麥克風中獲取的音頻無需經過文件系統直接通過AudioRecord類的read方法讀入到我們預定的緩沖區中,這里需要注意的是采樣率的大小必須有足夠的緩沖區空間處理、

  2. 變聲處理

  這點需要一些基本的音頻處理方式,比如移調、變速,Android開發網推薦大家參考Adobe Audition的早期Cool Editi泄露的代碼,當然音頻處理算法比較多,大家可以自己實現。

  3. 播放原始音頻流

  同樣,處理完后考慮到效率我們仍然直接從內存流中播放,最簡單的就是AudioTrack類,通過android.media.AudioTrack類的write方法,讓Android聲卡播放原始音頻流。兩種重載方法如下

int  write(short[] audioData, int offsetInShorts, int sizeInShorts) 
int  write(byte[] audioData, int offsetInBytes, int sizeInBytes) 


免責聲明!

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



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