iOS音頻變速變調(diào)研究

最近在做iOS音頻播放相關(guān)的項(xiàng)目育灸,需要處理聲音的播放快慢同時(shí)不能改變音頻的音調(diào)驰后,這個(gè)倒是簡(jiǎn)單,系統(tǒng)提供了一個(gè)播放類 AVAudioPlay懊烤,設(shè)置聲音的播放速度so easy梯醒, 但是如果要同時(shí)改變播放速度和音調(diào),這個(gè)就無能為力了腌紧。開始研究這方面真實(shí)愁白了我的少年頭茸习。不管咋樣先Google走起,找了白天發(fā)現(xiàn)了一個(gè)SoundTouch的庫(kù)壁肋,略屌吧C++寫的号胚,同時(shí)支持iOS和Android。研究了大概一個(gè)星期浸遗,效果啥的基本沒有太大問題猫胁,不過坑也填了不少啊。

1乙帮、SoundTouch實(shí)時(shí)轉(zhuǎn)碼那叫一個(gè)吃性能的怪獸杜漠,單個(gè)音頻差不多10%CPU左右了,這個(gè)是在采樣11050的情況下察净,提高采樣就更嚇人了驾茴,人家iOS自帶播放庫(kù)基本是0左右,如果真要是采用這種方式電能損耗直接被用戶罵死氢卡,APP估計(jì)就要撲街了锈至。果斷放棄了。

2译秦、又折騰了下峡捡,發(fā)現(xiàn)SoundTouch可以把轉(zhuǎn)換后的數(shù)據(jù)保存為音頻文件击碗,然后再用系統(tǒng)播放器播放,這個(gè)無疑解決了性能和耗電問題们拙,麻蛋轉(zhuǎn)換后的文件也不小啊稍途,要同時(shí)保存源文件以備下次轉(zhuǎn)換,而且轉(zhuǎn)換也挺費(fèi)時(shí)砚婆,一首3分鐘的歌大概要了30S械拍,無法忍受啊啊啊,而且每次修改參數(shù)装盯,還要重新轉(zhuǎn)碼坷虑,撲街,絕對(duì)撲街埂奈,估計(jì)又要?jiǎng)e用戶叼了迄损。其中還發(fā)現(xiàn)轉(zhuǎn)換的文件開始處有一點(diǎn)雜音,一直沒找出來到底是啥原因账磺,只能投機(jī)取巧的把開始部分截掉芹敌,基本對(duì)音頻沒有影響,感覺是轉(zhuǎn)換庫(kù)起始部分空數(shù)據(jù)的影響绑谣。

悲催的事情沒有過去党窜,中途搞了一段時(shí)間其他功能的開發(fā)后拗引,公司決定音頻變速變調(diào)這個(gè)功能要快點(diǎn)上線了借宵。一個(gè)頭兩個(gè)大,麻蛋天昏地暗矾削,天旋地轉(zhuǎn)壤玫,天要亡我。更可恨的是麻蛋Android以前用的播放器就支持變速變調(diào)哼凯,聽說還是Google的親兒子欲间,Google覺得原生的Android播放器不咋地,然后就又寫了一個(gè)放在github上(我不會(huì)告訴你是哪個(gè)断部,你自己去找)猎贴,無疑我的加快腳步啊。

天無絕人之路蝴光,天道酬勤她渴,天天向上...,找了不少的音頻公開庫(kù)蔑祟,終于讓我找到一點(diǎn)線索趁耗,一個(gè)貌似很強(qiáng)大的庫(kù) AudioKit,swift寫的疆虚。曾幾何時(shí)我和它失之交臂苛败,某一天的下午我在找SoundTouch資料時(shí)就已經(jīng)發(fā)現(xiàn)了它满葛,然后還研究了一下,當(dāng)時(shí)發(fā)現(xiàn)這個(gè)庫(kù)的時(shí)候感覺他就是制作音頻的專業(yè)級(jí)LIB罢屈,初略的看了下資料發(fā)現(xiàn)沒有介紹變速變調(diào)的嘀韧,基本是怎么合成啦,怎么制作使用啦缠捌,怎么濾波啦乳蛾,怎么制作立體聲啦巴拉巴巴這些的。雖然條條大路通羅馬鄙币,無疑我繞了地球一周肃叶。最終還是偶然的機(jī)會(huì)我翻了無數(shù)頁的Google后開到了關(guān)于AudioKit里API文檔里的關(guān)鍵詞Rate、Pitch之類十嘿。媽媽啊因惭,終于找到新大陸了。這個(gè)庫(kù)是個(gè)好庫(kù)绩衷,但目前我們的項(xiàng)目還是objc的蹦魔,而且也不想加入swift,這樣會(huì)使安裝包擴(kuò)大好幾M,產(chǎn)品經(jīng)理都不樂意了。好吧自己把需要的部分重寫狭园。

不看源碼不知道制市,一看源碼嚇一跳,原來iOS有另外一套音頻庫(kù)直接支持變速和變調(diào)损俭,我了個(gè)乖乖乖,是鄙人見識(shí)淺薄,引喻失義咆繁,孤陋寡聞,聞所未聞這方面的東東顶籽,好吧我就透露幾個(gè)關(guān)鍵詞玩般,剩下的自己Google腦補(bǔ),AVAudioEngine礼饱,AVAudioUnitTimePitch對(duì)沒錯(cuò)坏为,就是他這個(gè)東東非常強(qiáng)大,強(qiáng)大的AudioKit也是以它為基礎(chǔ)镊绪。

接下來就是開車時(shí)間匀伏,找到了突破口,問題迎刃而解镰吆,火速基本兩天就把新的音頻引擎庫(kù)搞定了帘撰,住要還是因?yàn)橛辛藚⒄詹拍軐懙倪@么快,以前我們使用SoundManager万皿,現(xiàn)在仿照SoundManager一路跟車摧找,暢通無阻核行!


? ? ? 接下來是源代碼, 恩是有準(zhǔn)備的蹬耘,但是目前還不能公開芝雪。我相信大家的能力 Google一下這種樣例代碼多的是啊,如果有遇到什么不好解決的問題可以留言給我哦综苔,大家一起進(jìn)步惩系!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市如筛,隨后出現(xiàn)的幾起案子堡牡,更是在濱河造成了極大的恐慌,老刑警劉巖杨刨,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晤柄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妖胀,警方通過查閱死者的電腦和手機(jī)芥颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赚抡,“玉大人爬坑,你說我怎么就攤上這事⊥砍迹” “怎么了盾计?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肉康。 經(jīng)常有香客問我闯估,道長(zhǎng)灼舍,這世上最難降的妖魔是什么吼和? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮骑素,結(jié)果婚禮上炫乓,老公的妹妹穿的比我還像新娘。我一直安慰自己献丑,他們只是感情好末捣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著创橄,像睡著了一般箩做。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妥畏,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天邦邦,我揣著相機(jī)與錄音安吁,去河邊找鬼。 笑死燃辖,一個(gè)胖子當(dāng)著我的面吹牛鬼店,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黔龟,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼妇智,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了氏身?” 一聲冷哼從身側(cè)響起巍棱,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛋欣,沒想到半個(gè)月后拉盾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豁状,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捉偏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泻红。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夭禽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谊路,到底是詐尸還是另有隱情讹躯,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布缠劝,位于F島的核電站潮梯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惨恭。R本人自食惡果不足惜秉馏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脱羡。 院中可真熱鬧萝究,春花似錦、人聲如沸锉罐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脓规。三九已至栽连,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侨舆,已是汗流浹背秒紧。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工舷暮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人噩茄。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓下面,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绩聘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沥割,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容