簡體   English   中英

使用Java更改音頻音高(Android)

[英]Changing audio pitch using Java (Android)

我想在不改變音頻速度的情況下更改聲音的音調,然后將其保存到WAV或MP3文件中,其想法是在Android上使用Java制作一些音效,但我沒有找到一種清晰的方法這樣做,有沒有需要閱讀的教程?

以下是Stephan M. Bernsee在C中使用的簡單而有價值的教程功能的鏈接,名為smbPitchShift.cpp,它可以提高或降低音樂信號的音調。

我還能夠在不改變音調的情況下使用它來減慢或加快音樂的播放速度。 如果您想在不改變原始音高的情況下進行時間拉伸,則可能必須應用重新采樣。

自從GitHub鏈接版本以來,Bernsee似乎對其代碼進行了一些更改。 可從他的網站上下載他的較新代碼-可能會增加其原始規格的轉換范圍。 我調整了他的原始代碼,以便將音調調高8倍。

https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

http://blogs.zynaptiq.com/bernsee/time-pitch-overview/

經過一些研究,我發現您要嘗試的操作稱為“音高轉換”。 顯然,這涉及很多數學運算和處理聲音數據包的問題,​​因為更改聲音的音高會自動更改其播放速度。 恢復到所需的速度,同時仍將音頻保持在“正常”水平,這並不是在公園散步。

無論如何,由於Unity3D使用C#,您可能(並且我強調這個詞可能)可以使用此開源庫來獲得所需的聲音效果。 它基於NAudio(也是開放源代碼和C#),因此從理論上講,您應該可以在項目中使用它或它的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM