iOS音頻變速變調研究

最近在做iOS音頻播放相關的項目,需要處理聲音的播放快慢同時不能改變音頻的音調,這個倒是簡單,系統提供了一個播放類 AVAudioPlay,設置聲音的播放速度so easy, 但是如果要同時改變播放速度和音調,這個就無能為力了。開始研究這方面真實愁白了我的少年頭。不管咋樣先Google走起,找了白天發現了一個SoundTouch的庫,略屌吧C++寫的,同時支持iOS和Android。研究了大概一個星期,效果啥的基本沒有太大問題,不過坑也填了不少啊。

1、SoundTouch實時轉碼那叫一個吃性能的怪獸,單個音頻差不多10%CPU左右了,這個是在采樣11050的情況下,提高采樣就更嚇人了,人家iOS自帶播放庫基本是0左右,如果真要是采用這種方式電能損耗直接被用戶罵死,APP估計就要撲街了。果斷放棄了。

2、又折騰了下,發現SoundTouch可以把轉換后的數據保存為音頻文件,然后再用系統播放器播放,這個無疑解決了性能和耗電問題,麻蛋轉換后的文件也不小啊,要同時保存源文件以備下次轉換,而且轉換也挺費時,一首3分鐘的歌大概要了30S,無法忍受啊啊啊,而且每次修改參數,還要重新轉碼,撲街,絕對撲街,估計又要別用戶叼了。其中還發現轉換的文件開始處有一點雜音,一直沒找出來到底是啥原因,只能投機取巧的把開始部分截掉,基本對音頻沒有影響,感覺是轉換庫起始部分空數據的影響。

悲催的事情沒有過去,中途搞了一段時間其他功能的開發后,公司決定音頻變速變調這個功能要快點上線了。一個頭兩個大,麻蛋天昏地暗,天旋地轉,天要亡我。更可恨的是麻蛋Android以前用的播放器就支持變速變調,聽說還是Google的親兒子,Google覺得原生的Android播放器不咋地,然后就又寫了一個放在github上(我不會告訴你是哪個,你自己去找),無疑我的加快腳步啊。

天無絕人之路,天道酬勤,天天向上...,找了不少的音頻公開庫,終于讓我找到一點線索,一個貌似很強大的庫 AudioKit,swift寫的。曾幾何時我和它失之交臂,某一天的下午我在找SoundTouch資料時就已經發現了它,然后還研究了一下,當時發現這個庫的時候感覺他就是制作音頻的專業級LIB,初略的看了下資料發現沒有介紹變速變調的,基本是怎么合成啦,怎么制作使用啦,怎么濾波啦,怎么制作立體聲啦巴拉巴巴這些的。雖然條條大路通羅馬,無疑我繞了地球一周。最終還是偶然的機會我翻了無數頁的Google后開到了關于AudioKit里API文檔里的關鍵詞Rate、Pitch之類。媽媽啊,終于找到新大陸了。這個庫是個好庫,但目前我們的項目還是objc的,而且也不想加入swift,這樣會使安裝包擴大好幾M,產品經理都不樂意了。好吧自己把需要的部分重寫。

不看源碼不知道,一看源碼嚇一跳,原來iOS有另外一套音頻庫直接支持變速和變調,我了個乖乖乖,是鄙人見識淺薄,引喻失義,孤陋寡聞,聞所未聞這方面的東東,好吧我就透露幾個關鍵詞,剩下的自己Google腦補,AVAudioEngine,AVAudioUnitTimePitch對沒錯,就是他這個東東非常強大,強大的AudioKit也是以它為基礎。

接下來就是開車時間,找到了突破口,問題迎刃而解,火速基本兩天就把新的音頻引擎庫搞定了,住要還是因為有了參照才能寫的這么快,以前我們使用SoundManager,現在仿照SoundManager一路跟車,暢通無阻!


? ? ? 接下來是源代碼, 恩是有準備的,但是目前還不能公開。我相信大家的能力 Google一下這種樣例代碼多的是啊,如果有遇到什么不好解決的問題可以留言給我哦,大家一起進步!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內容