陳立杰,王志國(guó),周曜
(咪咕音樂(lè)有限公司,成都 610041)
基于SoC的卡拉OK軟硬件實(shí)現(xiàn)方案的研究*
陳立杰,王志國(guó),周曜
(咪咕音樂(lè)有限公司,成都 610041)
本文首先介紹了基于SoC的卡拉OK系統(tǒng)的核心硬件音效處理器,包括常見的四類音效處理器各自的特點(diǎn),音效處理器的架構(gòu)分析及在原有架構(gòu)基礎(chǔ)的信號(hào)流的優(yōu)化。其次,從固定聲音延時(shí)、變化聲音延時(shí)兩方面對(duì)卡拉OK的音效處理系統(tǒng)進(jìn)行硬件加速,滿足回聲、混響、鑲邊、合聲和顫音等音效的一套硬件架構(gòu)。再次,闡述卡拉OK必備的點(diǎn)歌系統(tǒng)的分析及設(shè)計(jì)方案,達(dá)到功能完備,界面美觀,操作簡(jiǎn)單易于上手。最后,突破傳統(tǒng)卡拉OK單一的唱歌模式,對(duì)評(píng)分系統(tǒng)進(jìn)行技術(shù)分析和方案研究,從而通過(guò)評(píng)分系統(tǒng)為用戶提供從點(diǎn)唱到娛樂(lè)互動(dòng)的全新體驗(yàn)。
音效處理器;硬件加速;點(diǎn)歌系統(tǒng);評(píng)分系統(tǒng)
本文主要從卡拉OK硬件層面的音效處理器及音效處理系統(tǒng)的硬件加速方案,提升高逼真度的回聲和混響效果、低損傷嘯叫抑制,且具有均衡、壓擴(kuò)、音樂(lè)閃避等多種功能。軟件層面涉及到音效算法研究,然后對(duì)卡拉OK核心的點(diǎn)歌系統(tǒng)、評(píng)分系統(tǒng)的研究。
常見的音效處理器主要分為以下4種:
(1)單一的固化芯片處理器
例如在一些AD/DA 系列芯片內(nèi)部往往有個(gè)固定的處理模組,可以實(shí)現(xiàn)諸如延遲,混音,參量均衡等音效,主要級(jí)聯(lián)在調(diào)音設(shè)備、DVD、VCD 等與功放機(jī)之間,達(dá)到信號(hào)處理的目的。
(2)可編程多功能數(shù)字音頻處理器
市面上主要的單體音效處理器主要以此類音效處理器為主。采用可編程DSP等數(shù)字信號(hào)處理芯片實(shí)現(xiàn)效果。為了便于調(diào)節(jié)和配置參數(shù),通常會(huì)配置串口、USB以及網(wǎng)口等網(wǎng)絡(luò)設(shè)備實(shí)現(xiàn)。
(3)帶有網(wǎng)絡(luò)音頻傳輸功能的數(shù)字音頻處理器
該產(chǎn)品在實(shí)現(xiàn)上面兩項(xiàng)設(shè)備的功能同時(shí)還支持網(wǎng)絡(luò)的音頻傳輸功能,可以方便地實(shí)現(xiàn)在一個(gè)局部網(wǎng)絡(luò)內(nèi)實(shí)現(xiàn)音頻信號(hào)的分享和傳輸。非常方便實(shí)現(xiàn)整個(gè)KTV 場(chǎng)所的集中化管理和分布控制等功能。
(4)大型集中處理的數(shù)字音頻矩陣
該類系統(tǒng)的處理主要依賴于一臺(tái)強(qiáng)大的主機(jī)。每個(gè)KTV包間內(nèi)的網(wǎng)絡(luò)設(shè)備將相應(yīng)的音頻數(shù)據(jù)轉(zhuǎn)為網(wǎng)絡(luò)數(shù)據(jù)分組,經(jīng)由吉比特以太網(wǎng)等數(shù)據(jù)協(xié)議發(fā)送到控制主機(jī),處理之后再回放回各KTV包間。
圖1 典型音效處理信號(hào)流
這里可以看出小型設(shè)備屬于分散式系統(tǒng),需要每個(gè)房間進(jìn)行專門的調(diào)整和控制。而集中處理型的音頻矩陣非常適合集中管理與控制,但也價(jià)格不菲。目前 KTV場(chǎng)所中第二種、第三種數(shù)字音頻處理器仍占有絕大部分比重。
另一方面,近些年來(lái),高保真、多聲道的音響系統(tǒng)的逐步興起,現(xiàn)有的DSP數(shù)字信號(hào)處理器越來(lái)越無(wú)法滿足需要。相對(duì)于傳統(tǒng)的左右雙聲道模式,而目前動(dòng)輒5.1、7.1的聲道,單位時(shí)鐘內(nèi),龐大的數(shù)據(jù)量需要DSP 能夠快速實(shí)時(shí)地處理。這也需要DSP的數(shù)據(jù)處理能力有3~4倍的提升才能滿足需要。但目前即使高端的DSP芯片的處理能力仍很難達(dá)到實(shí)時(shí)處理的需要。目前多采用的是多DSP協(xié)處理架構(gòu)滿足設(shè)計(jì)需要。
總體來(lái)看,DSP通常在傳統(tǒng)的一般控制領(lǐng)域用途中并不擅長(zhǎng),而是專門設(shè)計(jì)用來(lái)在一個(gè)時(shí)鐘周期快速地執(zhí)行算術(shù)乘法累加的操作。研發(fā)過(guò)程中DSP的使用需要耗費(fèi)更多的硬件面積,即耗費(fèi)產(chǎn)品成本。且開發(fā)周期結(jié)束之后,若需要修改算法和系統(tǒng)擴(kuò)展所耗費(fèi)的時(shí)間精力和人力成本也是巨大的。這對(duì)于仍需不斷優(yōu)化和改進(jìn)的音效算法的實(shí)現(xiàn)也帶來(lái)巨大的難度。
目前主流的卡拉OK音效處理器的設(shè)計(jì)以單DSP架構(gòu)、多DSP協(xié)同處理和ARM+DSP 架構(gòu)為主。這里以某一產(chǎn)品樣機(jī)為代表的音效處理器采用的是STM32+DSP系統(tǒng)處理架構(gòu)。
圖2 優(yōu)化后的音效處理信號(hào)流圖
音效處理器的音頻處理模塊可以分為輸入與輸出兩個(gè)處理模塊,通常輸入模塊的主要功能在于通過(guò)高效的音效處理算法,對(duì)輸入信號(hào)進(jìn)行處理,從而使音樂(lè)輸入個(gè)性鮮明,無(wú)雜質(zhì);話筒輸入渾厚有力,包圍感強(qiáng),有澎湃感;有效改善由于輸入設(shè)備質(zhì)量或環(huán)境限制而產(chǎn)生的幅頻特性不平坦、聲音沙啞干澀、易于產(chǎn)生嘯叫等問(wèn)題。輸出模塊的主要功能在于防止數(shù)據(jù)溢出而產(chǎn)生雜音以及功率過(guò)大而損傷輸出終端。如圖1所示為音效處理的典型結(jié)構(gòu),圖2為優(yōu)化后的音效處理信號(hào)流圖。
音效系統(tǒng)的硬件加速主要從固定聲音延時(shí)、變化聲音延時(shí)進(jìn)行實(shí)現(xiàn)。
其思想為:利用DRAM 作為存儲(chǔ)空間,而不是用SRAM來(lái)做數(shù)據(jù)的延遲存儲(chǔ)單元,實(shí)際的操作方式如圖3所示。
圖3 固定延時(shí)通過(guò)讀寫指針實(shí)現(xiàn)原理圖
讀寫指針的速度是一致的,它的意思是聲音播放和麥克風(fēng)的采樣率是一致的,那么當(dāng)讀寫指針在初始化時(shí)相隔一定的長(zhǎng)度,那么此長(zhǎng)度就是固定聲音延時(shí)的時(shí)間長(zhǎng)度(根據(jù)相應(yīng)的采樣率就是延時(shí)時(shí)間)。實(shí)現(xiàn)固定的聲音延時(shí)功能。
使用一個(gè)較大的SRAM用于存儲(chǔ)最近麥克風(fēng)輸入的數(shù)據(jù),用計(jì)算出對(duì)應(yīng)的地址,然后使用DMA從DRAM中取出數(shù)據(jù),與前面使用SRAM作為延時(shí)存儲(chǔ)空間的尋址方法類似。需要使用 SRAM 作為存儲(chǔ)空間,特別是當(dāng)SRAM 較大的話,耗費(fèi)的成本較大;但是由于其訪問(wèn)速度快,且不會(huì)使用DMA消耗系統(tǒng)帶寬。
卡拉OK點(diǎn)歌系統(tǒng)是數(shù)據(jù)庫(kù)技術(shù)和多媒體技術(shù)結(jié)合的軟件系統(tǒng)。其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立響應(yīng)迅速,數(shù)據(jù)一致性和完整性好的數(shù)據(jù)庫(kù),并提供功能全面的數(shù)據(jù)庫(kù)維護(hù)應(yīng)用程序;而對(duì)于后者則要求應(yīng)用程序功能完備,界面美觀,操作簡(jiǎn)單易于上手。
前臺(tái)系統(tǒng)提供多種點(diǎn)歌方式來(lái)選擇歌曲。系統(tǒng)支持實(shí)時(shí)編輯已點(diǎn)歌曲列表。播放器支持密碼登陸,可以通過(guò)設(shè)定密碼來(lái)保護(hù)系統(tǒng)不被非法用戶使用。后臺(tái)系統(tǒng)用來(lái)管理歌曲數(shù)據(jù)信息和設(shè)置選項(xiàng)。在編輯期提供查找、添加、刪除、修改和同步數(shù)據(jù),內(nèi)建正確性檢查機(jī)制,保證了輸入數(shù)據(jù)的可信性。后臺(tái)系統(tǒng)支持備份、恢復(fù)、和壓縮數(shù)據(jù)庫(kù)。
3.2.1 建立并訪問(wèn)數(shù)據(jù)庫(kù)
建立初始數(shù)據(jù)庫(kù):歌曲信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。實(shí)現(xiàn)程序到數(shù)據(jù)庫(kù)的連接:在程序中新建一個(gè)工程,添加數(shù)據(jù)訪問(wèn)模塊,在該模塊中建立ADO Connection負(fù)責(zé)連接數(shù)據(jù)源。
3.2.2 編輯器的實(shí)現(xiàn)
3.2.2.1 實(shí)現(xiàn)數(shù)據(jù)庫(kù)的編輯功能
編輯器的基本功能是編輯數(shù)據(jù),所以首先實(shí)現(xiàn)數(shù)據(jù)表編輯功能。因?yàn)楦枨哪承┬畔⑹怯邢薜木酆项愋汀缧詣e只有男和女,國(guó)別只有中國(guó)和外國(guó)等,所以為Dbgrid的Cell添加下拉列表,使用戶只需從下拉列表種選擇要輸入的內(nèi)容,而不必手工輸入。歌曲路徑是指向某個(gè)影音文件的路徑,為方便用戶添加,在“路徑”輸入?yún)^(qū)域添加打開文件按鈕。
3.2.2.2 保存、備份和恢復(fù)數(shù)據(jù)庫(kù)
有必要添加錄入數(shù)據(jù)合法性檢查功能,當(dāng)通過(guò)了數(shù)據(jù)合法性檢查和保存期的自動(dòng)完成功能后,開始保存進(jìn)程。保存進(jìn)程將同時(shí)壓縮數(shù)據(jù)庫(kù)以減小其體積。啟用了批處理模式后,保存數(shù)據(jù)庫(kù)將使用Adotable對(duì)象的Up Date Batch方法實(shí)現(xiàn)。壓縮數(shù)據(jù)庫(kù)在保存數(shù)據(jù)庫(kù)之后進(jìn)行,該功能通過(guò)Jet對(duì)象的Compact Database方法實(shí)現(xiàn)。為防止數(shù)據(jù)庫(kù)丟失,程序提供備份和恢復(fù)數(shù)據(jù)庫(kù)功能。通過(guò)簡(jiǎn)單的使用TOpen Dialog和TSave Dialog組件,可以完成數(shù)據(jù)庫(kù)的恢復(fù)和備份。
3.2.2.3 播放器的實(shí)現(xiàn)
(1)登錄窗體。播放器支持密碼登陸,登陸進(jìn)程將驗(yàn)證密碼的正確性以確定用戶是否具有登陸系統(tǒng)的資格。登陸窗體提供一個(gè)軟鍵盤用以輸入密碼。
(2)主窗體的設(shè)計(jì)。主窗體用來(lái)提供個(gè)功能窗體的入口和控制播放。
(3)列表設(shè)計(jì)。列表是提供歌曲列表顯示的區(qū)域,由Label組成,提供翻頁(yè)、跳轉(zhuǎn)到頁(yè)首和頁(yè)尾的功能。
(4)歌曲列表編輯。播放器提供對(duì)歌曲列表的編輯功能,用戶可以改變歌曲的播放次序,也可以刪除某個(gè)曲目。為了得到用戶選擇的歌曲名稱,程序?qū)⒔腖abel到歌曲序號(hào)之間的映射。
(5) 歌曲搜索。用戶選擇了一個(gè)搜索歌曲的方法后,程序?qū)⒏鶕?jù)用戶選擇的方法查找對(duì)應(yīng)的曲目,然后返回結(jié)果供用戶選擇。由于搜索實(shí)在內(nèi)存中進(jìn)行的,所以速度較快,整個(gè)過(guò)程是對(duì)數(shù)組的遍歷。
(6) 播放窗體。歌曲的播放是在播放窗體內(nèi)完成的。播放功能通過(guò)T實(shí)例Mediaplayer1得以實(shí)現(xiàn)。為了實(shí)現(xiàn)歌曲列表的播放,程序?qū)⑴袛郥rack Length的值以確定曲目是否已經(jīng)播放完畢,如果播放完畢而歌曲列表沒有到達(dá)低端,則播放下一首。
現(xiàn)有的演唱評(píng)分技術(shù)一般是基于音準(zhǔn)來(lái)進(jìn)行評(píng)判的。因此,設(shè)計(jì)一個(gè)卡拉OK評(píng)分系統(tǒng)的重點(diǎn)就是如何將音準(zhǔn)評(píng)分技術(shù)和卡拉OK系統(tǒng)進(jìn)行有機(jī)的融合。
音準(zhǔn)的目的是使得歌唱或樂(lè)器演奏中所發(fā)的音高能與一定律制的音高相符。音準(zhǔn)評(píng)分技術(shù)是一種以聲音作為輸入數(shù)據(jù),經(jīng)處理器進(jìn)行運(yùn)算得到量化參數(shù)后,最終由顯示單元圖形界面反饋給用戶,使其能夠?qū)ψ约貉莩曇暨M(jìn)行調(diào)整以符合標(biāo)準(zhǔn)要求的技術(shù)。音準(zhǔn)特征文件是由歌譜制作而成,以句為單位,詳細(xì)地記錄了每一句中的每一個(gè)歌詞文字以及對(duì)應(yīng)的音高,以及每個(gè)音高的起止時(shí)間點(diǎn)以及音高值。
在業(yè)務(wù)流程中,用戶輸入聲音,系統(tǒng)反饋實(shí)時(shí)評(píng)分效果,以指導(dǎo)用戶在下個(gè)時(shí)間點(diǎn)輸入正確的聲音,以此循環(huán)往復(fù)。因此,描述評(píng)分操作業(yè)務(wù)流程可以以用戶輸入聲音為起點(diǎn),用戶聲音通過(guò)麥克風(fēng)采集后轉(zhuǎn)換為數(shù)字語(yǔ)音信號(hào)數(shù)據(jù),系統(tǒng)通過(guò)語(yǔ)音信號(hào)處理分析其短時(shí)語(yǔ)音基頻,并根據(jù)頻率、音高轉(zhuǎn)換關(guān)系得到對(duì)應(yīng)時(shí)間點(diǎn)音高參數(shù),這里的時(shí)間點(diǎn)來(lái)源于卡拉OK 系統(tǒng)播放音頻文件得到的播放時(shí)間,整個(gè)系統(tǒng)都以該時(shí)間線為基準(zhǔn)處理事件的時(shí)間對(duì)應(yīng)關(guān)系。在播放音頻的同時(shí),系統(tǒng)將解析音準(zhǔn)特征文件,以獲得標(biāo)準(zhǔn)的音高、時(shí)間對(duì)應(yīng)關(guān)系,這是評(píng)分的基準(zhǔn),用戶輸入的語(yǔ)音經(jīng)過(guò)處理后得到的音高參數(shù)將與該基準(zhǔn)對(duì)應(yīng)時(shí)間點(diǎn)音高值進(jìn)行匹配,從而按照匹配度計(jì)算得分。系統(tǒng)的演唱界面部分則負(fù)責(zé)實(shí)時(shí)向用戶展示當(dāng)前時(shí)間點(diǎn)的演唱情況,包括歌詞、標(biāo)準(zhǔn)音高序列、用戶演唱音高,以及實(shí)時(shí)得分信息等。用戶將根據(jù)演唱界面當(dāng)前的演唱效果作為指導(dǎo),從而決定下個(gè)時(shí)間點(diǎn)的輸入聲音。該循環(huán)將重復(fù)直至歌曲文件播放完畢,此時(shí)系統(tǒng)將計(jì)算最終得分,并將結(jié)果通過(guò)演唱界面展示給用戶。
設(shè)計(jì)方案需要包含以下4個(gè)元素:
音高音長(zhǎng)信息:根據(jù)歌曲歌譜將對(duì)應(yīng)時(shí)刻音高,以及時(shí)長(zhǎng)表現(xiàn)在五線譜上供演唱者參考;
歌詞:歌曲歌譜將對(duì)應(yīng)語(yǔ)句歌詞文字顯示在演唱界面供演唱者參考;
演唱游標(biāo):指示演唱者當(dāng)前演唱進(jìn)度,并反映演唱者聲音的量化音高;
評(píng)分狀態(tài):演唱者實(shí)時(shí)得分評(píng)價(jià),包括得分、點(diǎn)評(píng)、加成等各種狀態(tài)。
在整體形態(tài)上,一般有兩種方案。
4.2.1 設(shè)計(jì)方案 1
將演唱游標(biāo)固定,音高、歌詞信息在界面上從右向左水平移動(dòng)。這個(gè)方案優(yōu)勢(shì)是演唱者視線可專注于固定的游標(biāo)區(qū)域,劣勢(shì)是當(dāng)一首卡拉OK歌曲節(jié)奏比較快時(shí),信息的運(yùn)動(dòng)速度也很快,演唱者瀏覽信息的速度跟不上信息自身運(yùn)動(dòng)速度。
4.2.2 設(shè)計(jì)方案 2
是將當(dāng)前句的音高、歌詞,以及下一句的歌詞固定顯示在屏幕上,游標(biāo)隨著演唱進(jìn)度水平向右移動(dòng)。這樣做的好處是演唱者一次性就可以把當(dāng)前句和下一句歌詞都提前瀏覽,便于演唱;另一方面,由于不需要移動(dòng)大量的信息,減少了信息刷新面積,節(jié)省了大量 CPU 的計(jì)算消耗,可以使系統(tǒng)更靈活的運(yùn)用在嵌入式領(lǐng)域以及其他低功耗的應(yīng)用領(lǐng)域。
卡拉OK音效處理器作為重要的音效處理組件,是整個(gè)KTV系統(tǒng)的靈魂所在?;赟oC技術(shù)的卡拉OK音效處理器實(shí)現(xiàn)音頻采集、音頻輸出以及相應(yīng)的接口,實(shí)現(xiàn)基本的音效處理算法包括回聲、混響、均衡、壓限和嘯叫抑制等音效處理。
音頻系統(tǒng)是一個(gè)較慢的系統(tǒng),所以為了減少硬件面積的開銷,音效處理的硬件加速實(shí)現(xiàn)共用硬件,把很多的乘法運(yùn)算和加法運(yùn)算采用串行的方式進(jìn)行。以及修改比較耗硬件面積的軟件實(shí)現(xiàn)的算法,通過(guò)對(duì)算法的重新梳理和替代,用較小的硬件代價(jià)完成和軟件實(shí)現(xiàn)效果近似的功能塊。
[1] 劉愛珍. 淺析卡拉OK組合音響電子混響器原理與維修策略[J].科學(xué)與財(cái)富, 2016,(Z1):598-598.
[2] 李國(guó)楨. 在線卡拉OK流媒體子系統(tǒng)[D]. 武漢:湖北工業(yè)大學(xué), 2007.
[3] 李林葳. 卡拉OK音效算法的設(shè)計(jì)與DSP實(shí)現(xiàn)[D]. 重慶:重慶大學(xué), 2016.
[4] 李建紅, 梁光勝. 基于SPCE061A的卡拉OK智能點(diǎn)唱系統(tǒng)的設(shè)計(jì)[J]. 中國(guó)電力教育, 2005,(z2):24-27.
Research on implementation scheme of Karaoke hardware and software based on SoC
CHEN Li-jie, WANG Zhi-guo, ZHOU Yao
(Migu Music Co., Ltd., Chengdu 610041, China)
This article first introduced the karaoke system based on SoC core hardware sound processor,including the four characteristics of the four types of audio processors,the architecture analysis of the sound processor and the optimization of the signal flow based on the original architecture.Secondly, from the fi xed sound delay, change the sound delay on both aspects of the karaoke sound processing system hardware acceleration,a set of hardware architectures that meet the effects of echo, reverb, trim, chorus,and vibrato.Again, elaborate karaoke VoD system analysis and design,to achieve full-featured, beautiful interface, easy to operate easy.Finally, breaking the traditional karaoke single singing mode, the scoring system for technical analysis and program research, so that through the scoring system to provide users with a new experience from the point of singing to entertainment.
audio processor; hardware acceleration; VoD system; grading system
TP311
A
1008-5599(2017)09-0017-05
2017-08-25
* 中國(guó)移動(dòng)集團(tuán)級(jí)一類科技創(chuàng)新成果,原成果名稱為《咪咕家庭音樂(lè)互動(dòng)娛樂(lè)平臺(tái)》。