欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

iOS音頻采集過程中的音效實現(xiàn)-創(chuàng)新互聯(lián)

1、背景

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供榆樹網站建設、榆樹做網站、榆樹網站設計、榆樹網站制作等企業(yè)網站建設、網頁設計與制作、榆樹企業(yè)網站模板建站服務,十多年榆樹做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

在移動直播中, 聲音是主播和觀眾互動的重要途徑之一, 為了豐富直播的內容,大家都會想要在聲音上做一些文章, 在采集錄音的基礎上玩一些花樣。

比如演唱類的直播間中, 主播伴隨著背景音樂演唱. 這時有些主播就會希望能夠給自己聲音增加混響的效果, 營造出在舞臺劇場等環(huán)境下演唱的氛圍. 再比如有些搞笑類的直播間, 主播會希望給自己的聲音添加變聲的效果, 女變男,男變女或者變成機器人等等. 為了實現(xiàn)這些需求我們需要對采集的聲音進行處理, 并且為了讓主播實時聽到這些處理后的效果,以便根據(jù)效果進行調整,我們也需要提供低延時的回放,將變化后的聲音播放給主播聽.對聲音處理的方案比較多,這里介紹一下金山云直播SDK中所采用的基于iOS提供的AudioUnit的方案。

iOS系統(tǒng)提供了非常豐富的音頻相關的API,涵蓋了從采集,處理到播放等各個環(huán)節(jié),并且按照需求的層次進行了分組。
iOS音頻采集過程中的音效實現(xiàn)
圖1. Core Audio Overview
其中,離底層的驅動和硬件最近的就是AudioUnit系列的API,很多其他高層的API,都是對AudioUnit的封裝. 比如AVFoundation、AudioQueue、AVAudioEngine等。

缺點:

涉及到的專有概念比較多,接口復雜

提供C風格的API

優(yōu)點:

低延時,從采集到播放回環(huán)可以到10ms的級別

可以動態(tài)變更配置組合

可以直接獲得后臺執(zhí)行權限

  1. AudioUnit簡介

AudioUnit這個名字取得還是比較形象的,它的主體就是一系列的unit,不同unit能夠實現(xiàn)不同的功能,將一個或多個unit添加到AUGraph(Audio Processing Graph)中,并建立unit之間的連接,音頻數(shù)據(jù)順次通過各個節(jié)點即可完成我們最終需求。
iOS音頻采集過程中的音效實現(xiàn)
圖2. AudioUnit in iOS
iOS系統(tǒng)一共提供了如下4類unit。
iOS音頻采集過程中的音效實現(xiàn)
其中,I/O主要負責和設備打交道,比如采集和播放;Mixing負責將不同來源的音頻數(shù)據(jù)進行混合;Effect是對音頻數(shù)據(jù)進行音效處理;Format Conversion主要是進行格式轉換比如重采樣等。這里有一個優(yōu)化的點是音頻格式轉換 Multichannel Mixer 本身就能夠實現(xiàn)格式轉換的功能,輸入和輸出的音頻數(shù)據(jù)格式可以不同,利用這一點可以節(jié)省一個格式轉換unit。

  1. 使用AudioUnit進行音頻采集

在直播應用中,我們主要是使用Remote I/O unit來進行采集工作。 在一個AUGraph中只允許有一個I/O unit。Remote I/O需要同時負責采集和播放的功能。當用戶開啟耳返功能時,要將采集到的聲音,處理之后再送回當前節(jié)點直接播放,這樣可以將采集和播放的延時控制在50ms以內,主播才察覺不到聲音的延時。 基本的步驟如下:

  1. 實例化AUGraph,將用到units添加進去;

  2. 配置每個AudioUnit的屬性;

  3. 設置Render Callback Function;

4.將units 建立連接;

5.啟動AUGraph。

以上過程大家都可以到Apple官方的文檔中找到具體的說明和代碼示例。

在直播錄制中比較關鍵的一步就是Render Callback Function。
iOS音頻采集過程中的音效實現(xiàn)
AudioUnit每次都是處理一段音頻數(shù)據(jù),每次處理完成一段數(shù)據(jù)的時候,這個回調函數(shù)就會被調用一次。在這個回調函數(shù)中,通過AudioUnit的AudioUnitRender方法,可以AUGraph中的某一個節(jié)點中獲取到一段處理后的音頻PCM數(shù)據(jù)。同時,如果需要進行耳返播放,在這個回調中也需要將取得的音頻數(shù)據(jù)送入到回調函數(shù)的最后一個參數(shù)ioData對應的buffer中。

在設置unit的屬性時,需要注意的是一些公共的屬性。比如音頻格式屬性和MaximumFramesPerSlice。如果音頻格式設置錯誤,往往會出現(xiàn)AUGraph啟動失敗或者聲音異常等問題。比如,使用iOS內置的麥克風或者有線耳機時,設備支持的采樣率比較高,44.1KHz 能正常工作,我們整條音頻通路上基本上都采用的是44.1KHz。但是當使用藍牙設備時,一般藍牙設備無法支持44.1KHz采集和播放,通常都是16KHz甚至更低。此時I/O Unit無法繼續(xù)使用之前的配置。需要按照實際支持的采樣率進行配置。

AudioUnit還要求兩個單元銜接處的音頻數(shù)據(jù)格式必須保持一致,當AUGraph中不同unit支持的格式不同時(比如在支持藍牙設備或者使用回聲消除模塊時,I/O unit要求的格式和其他單元的有可能不同),此時就需要分別設置格式,并通過格式轉換unit或mixer unit對格式進行轉換。

如果MaximumFramesPerSlice設置錯誤,可能會出現(xiàn)聲音異常的情況。 MaximumFramesPerSlice 表示的是每次回調送入或取出的音頻數(shù)據(jù)的長度,在AUGraph的所有節(jié)點的這個屬性也需要保持一致否則會導致有的unit丟棄數(shù)據(jù),而出現(xiàn)聲音異常 。

  1. 使用AudioUnit進行音效處理

這里所謂的音效處理,主要是指對原本的聲音進行一些改變,比如混響效果,變聲效果等。用到手段主要是數(shù)字信號處理提供的一系列時間和頻域的工具,將輸入的PCM數(shù)據(jù)經過運算后得到變化后的聲音。

4.1 混響效果(reverberation)

我們在音樂廳,劇院,禮堂等比較空曠的室內說話或唱歌時,往往能聽到和平時不一樣的聲音,主要是聲音在墻壁上多次反射后疊加在一起,聽起來就有了混響的效果。在聲音處理中,我們可以人為的將聲音緩存起來,延時一定時間后,和原聲音疊加,就能夠模擬出混響的效果。AudioUnit提供了kAudioUnitSubType_Reverb2來實現(xiàn)混響效果的生成。將該unit接入到AUGraph中之后,配置參數(shù)即可實現(xiàn)混響的效果。雖然混響原理是比較簡單,但實際上為了模擬自然界中實際的音效,計算過程還是相當復雜的,要模擬出不同的大小的空間,不同材質的墻壁,障礙物的多少,需要輸入比較多的參數(shù)來參與運算。iOS的reverb unit提供了7個參數(shù)。我們在直播應用中提供了4個不同場景的模擬(錄音棚,演唱會,×××,小舞臺),主要是通過調整如下參數(shù)實現(xiàn)的:

kReverb2Param_DryWetMix混響效果聲的大小與空間大小無關,而只與空間內雜物的多少以及墻壁及物體的材質有關;

kReverb2Param_DecayTimeAt0Hz / kReverb2Param_DecayTimeAtNyquist衰減時間,整個混響的總長度,與空間大小比較相關,越空曠越長。

4.2 變聲效果

變聲效果主要是在頻域上對人的聲音進行一定的處理,我們知道男聲一般比較低沉,女聲比較尖銳,這個主要說的是音調。通過對聲音音調的調整,可以讓低沉的男聲聽上去像尖銳女聲。iOS提供了kAudioUnitSubType_NewTimePitch的unit來實現(xiàn)音調的調整。值得注意的是kAudioUnitSubType_NewTimePitch不是輸入Effect類的,而是屬于FormatConverter類的。通過設置TimePitch unit的kNewTimePitchParam_Pitch屬性即可。

/// pitchShift為具體數(shù)值(0表示不變,負數(shù)表明調低沉,正數(shù)調尖銳)AudioUnitSetParameter(pitchUnit, kNewTimePitchParam_Pitch, kAudioUnitScope_Global, 0, pitchShift, 0);

變男聲,需要強化突出低沉的特點,將音調調低,設置負數(shù)參數(shù)即可;

變女聲,需要強化突出尖銳的特點,將音調調高,設置正數(shù)即可;

機器人音效,機器人的音效是一個組合效果,我們印象中的機器人音效都是老電影中的那種,音調比較高,而且有重音。所以我們采用的是TimePitch unit + Delay unit的方式。Delay unit也是iOS提供的一個將聲音延時疊加的unit,但是比混音要簡單很多,只有單次疊加;

莊嚴宏大音效,想象一下佛祖之類的聲音,一般都是自帶回聲,而且比較男性化,所以我們選擇的是TimePitch unit + Reverb unit的方式來實現(xiàn)。

這里推薦一個自己調音效的參考軟件voxal voice changer。大家可以在這個軟件上自己將不同的工具組件組合起來,調試參數(shù),實時聽到參數(shù)對應的結果。當效果滿意后再移植到AudioUnit中。

iOS音頻采集過程中的音效實現(xiàn)
圖3 voixal voice changer

  1. 總結

以上大概介紹了怎么用AudioUnit來實現(xiàn)iOS直播中的音頻采集,怎么使用AudioUnit中的音效組件來實現(xiàn)混響和變聲效果。但是AudioUnit的潛力還遠沒有挖掘完,比如還可以將背景音樂播放,混音,回聲消除等其他移動多媒體音頻相關的功能納入到這個框架中。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

名稱欄目:iOS音頻采集過程中的音效實現(xiàn)-創(chuàng)新互聯(lián)
分享URL:http://aaarwkj.com/article34/deoppe.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供商城網站品牌網站制作、用戶體驗、網站改版、網站排名、面包屑導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站優(yōu)化排名
国产亚洲精品女人久久久| 一本色道av久久精品+| 人妻少妇偷人精品免费看| 欧美综合亚洲韩精品区| 国内午夜福利精品视频| 日韩欧美国产一区二区精品| 精品国产亚洲av剧情| 久热精品视频在线观看| 精品爆白浆一区二区三区| 亚洲黄色大片在线免费观看| 18禁的视频在线观看| 欧美伊人久久大综合精品| 欧美高清一区二区在线播放| 亚洲成人福利免费网站| 午夜av在线毛片免费观看| 精品久久久久久久中文字幕| 亚洲国产男同日韩小鲜肉| 亚洲午夜一区二区不卡| 国产精品伊人久久精品| 激情小说婷婷亚洲综合| 亚洲精品av一区二区久久| 亚洲男人天堂av电影| 久久91亚洲精品中文字幕| 国产三级自拍视频在线观看| 国产操大奶头女人自拍av| 国产日韩欧美一区二区三区四区| 日韩精品一区二区三区四区在线视频| 日本亚洲欧洲一区二区| 亚洲黄色av电影在线| 91熟女激情五月综合| 亚洲免费一级黄色录像片| 日本成人午夜电影网站| 国产情侣自拍在线观看| 久久国产精品亚洲看片| 免费av男人天堂亚洲天堂| 男人的天堂av最新版本| 国产精品免费观看在线国产| 下载一个日韩暴力黄色录像| 久久精品色妇熟妇丰满人妻| 日本丝袜福利在线观看| 欧美黄色免费电影网站|