專(zhuān)利名稱(chēng):一種自動(dòng)放大音量的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于語(yǔ)音傳輸技術(shù)領(lǐng)域,尤其涉及一種在語(yǔ)音傳輸過(guò)程中,自動(dòng)放大音量的方法。
背景技術(shù):
當(dāng)前,通過(guò)視頻會(huì)議系統(tǒng),以及采用例如即時(shí)通訊(IM)工具的軟件,能夠?qū)崿F(xiàn)語(yǔ)音傳輸,從而實(shí)現(xiàn)兩地的語(yǔ)音交互。在該語(yǔ)音傳輸過(guò)程中,經(jīng)常會(huì)出現(xiàn)通話一方由于把本地系統(tǒng)音量調(diào)得比較低,而導(dǎo)致在接收端音量過(guò)低而使接收方無(wú)法聽(tīng)清楚的現(xiàn)象。此時(shí),如果接收端用戶以手動(dòng)方式將本地系統(tǒng)音量調(diào)高,則又會(huì)影響到本地其它設(shè)備的放音效果,尤其是在多方參與的視頻會(huì)議系統(tǒng)以及多方通話系統(tǒng)中,一個(gè)接收端用戶往往同時(shí)接收到多個(gè)發(fā)送端用戶的多路語(yǔ)音,而這些多路語(yǔ)音的音量高低不一,如果此時(shí)還選擇整體調(diào)高本地音量,則可能導(dǎo)致原本為正常音量的語(yǔ)音也同樣被放大,最終影響接收端用戶的聽(tīng)覺(jué)質(zhì)量。因此,需要在接收端引入一個(gè)音量自動(dòng)放大機(jī)制。
在現(xiàn)有技術(shù)中,采用自動(dòng)增益控制(AGC,Automatic Gain Control)技術(shù)實(shí)現(xiàn)音量的自動(dòng)放大,該技術(shù)的核心思想在于將接收到的語(yǔ)音流分成固定大小的處理塊(block),每個(gè)處理塊中包含若干個(gè)樣本點(diǎn)量化振幅值數(shù)據(jù)。根據(jù)當(dāng)前接收到的語(yǔ)音的音量高低,按照某種算法為每個(gè)處理塊計(jì)算出一個(gè)放大倍數(shù)(Gain),然后,將這個(gè)放大倍數(shù)乘以每個(gè)樣本點(diǎn)的振幅值并輸出,從而達(dá)到音量自動(dòng)放大的效果。在計(jì)算放大倍數(shù)時(shí),必須同時(shí)考慮放大倍數(shù)應(yīng)當(dāng)小于當(dāng)前處理塊的最大放大倍數(shù),也就是說(shuō),控制放大后的振幅值不能超過(guò)最大的量化等級(jí),例如,當(dāng)語(yǔ)音的量化等級(jí)為16位時(shí),應(yīng)該保證放大后的樣本點(diǎn)振幅值不能超過(guò)215-1,即不能超過(guò)32767。因此可見(jiàn),在音量放大過(guò)程中,音量的放大受到處理塊最大放大倍數(shù)的限制。
由此可見(jiàn),現(xiàn)有技術(shù)所提供的方法雖然能夠?qū)崿F(xiàn)音量的自動(dòng)放大,但是,語(yǔ)音放大效果會(huì)由于最大放大倍數(shù)的限制而受到影響,表現(xiàn)在在一段語(yǔ)音中,總會(huì)出現(xiàn)偶爾的音量超高時(shí)段,這些超高時(shí)段對(duì)應(yīng)的樣本點(diǎn)的振幅值相對(duì)于其周?chē)鷺颖军c(diǎn)的振幅值高出很多;在現(xiàn)有技術(shù)中,為了使所有的樣本點(diǎn)經(jīng)過(guò)放大后都不失真,必須找出該語(yǔ)音段中最高的樣本點(diǎn)振幅值,以該振幅值作為標(biāo)準(zhǔn)來(lái)計(jì)算所允許的最大放大倍數(shù),并以該最大放大倍數(shù)作為語(yǔ)音放大過(guò)程中所采用的放大倍數(shù)的上限;由于超高振幅值樣本點(diǎn)的存在,必然導(dǎo)致現(xiàn)有技術(shù)以該超高振幅值作為標(biāo)準(zhǔn)計(jì)算最大放大倍數(shù),其所計(jì)算得到的最大放大倍數(shù)必然較小,以該較小的放大倍數(shù)作為語(yǔ)音放大過(guò)程中的放大倍數(shù)上限,會(huì)影響語(yǔ)音中大部分正常語(yǔ)音流的放大效果。
另外,現(xiàn)有技術(shù)在計(jì)算放大倍數(shù)時(shí),忽略了處于靜音期間的情況,當(dāng)通話處于靜音期間時(shí),所計(jì)算出的放大倍數(shù)往往很大,而現(xiàn)有技術(shù)沒(méi)有對(duì)靜音期間進(jìn)行任何限制,因此,在靜音期間,會(huì)出現(xiàn)由于放大倍數(shù)很大而導(dǎo)致背景聲音被超高放大從而在接收端出現(xiàn)嘯叫聲的現(xiàn)象,該嘯叫聲會(huì)嚴(yán)重影響接收端的聽(tīng)覺(jué)效果。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種自動(dòng)放大音量的方法,該方法引入失真率參數(shù),從而將那些少數(shù)的超高振幅值樣本點(diǎn)忽略掉,從而保證語(yǔ)音中大部分正常語(yǔ)音流的放大效果。進(jìn)一步地,在本發(fā)明中,設(shè)置專(zhuān)門(mén)用于限制靜音期間的最大放大倍數(shù)參數(shù),利用該參數(shù)來(lái)避免語(yǔ)音放大過(guò)程中在靜音期間出現(xiàn)嘯叫聲。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種自動(dòng)放大音量的方法,該方法包括步驟A根據(jù)預(yù)先設(shè)定的失真率參數(shù),計(jì)算得到滿足該失真率的最大振幅值,然后,樣本點(diǎn)的最大振幅值除以該滿足失真率的最大振幅值,得到最大放大倍數(shù);
步驟B將語(yǔ)音處理塊中的各個(gè)樣本點(diǎn)的振幅值分別乘以步驟A得到的最大放大倍數(shù),得到新的振幅值并輸出。
其中,在步驟A和步驟B之間,該方法進(jìn)一步包括步驟C比較步驟A所得到的最大放大倍數(shù)是否大于預(yù)先設(shè)定的最大放大倍數(shù)參數(shù),如果是,則以預(yù)先設(shè)定的最大放大倍數(shù)參數(shù)作為最大放大倍數(shù),然后執(zhí)行步驟B,否則,直接執(zhí)行步驟B。
其中,步驟A包括步驟A11統(tǒng)計(jì)語(yǔ)音中每個(gè)振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù);步驟A12從最高振幅值的絕對(duì)值開(kāi)始,至振幅值為0結(jié)束,逐一遞減地選擇振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟A12,否則,以當(dāng)前振幅值作為所述滿足失真率參數(shù)的最大振幅值;步驟A13用語(yǔ)音中樣本點(diǎn)的最大振幅值的絕對(duì)值除以滿足失真率參數(shù)的最大振幅值,得到所述最大放大倍數(shù)。
其中,步驟A12包括步驟A121設(shè)當(dāng)前振幅值i,該當(dāng)前振幅值i的初始值為樣本點(diǎn)的最大振幅值的絕對(duì)值-1;步驟A122計(jì)算當(dāng)前振幅值i對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù),將該樣本點(diǎn)個(gè)數(shù)與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)相加,并將相加結(jié)果賦值給變量TotalNum;其中,TotalNum的初始值為0;步驟A123用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù),得到當(dāng)前失真率,判斷該失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟A124,否則,執(zhí)行步驟A125;步驟A124當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,否則,返回步驟A122;步驟A125將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值。
其中,步驟A包括步驟A21將處理塊中的所有樣本點(diǎn)振幅值進(jìn)行縮小映射,然后,統(tǒng)計(jì)出映射后的每個(gè)振幅值所包含的樣本點(diǎn)個(gè)數(shù);步驟A22從縮小映射后的最高振幅值開(kāi)始,至縮小映射后的振幅值為0結(jié)束,逐一遞減地選擇縮小映射后的振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟A22,否則,以當(dāng)前振幅值作為所述滿足失真率參數(shù)的最大振幅值;步驟A23用縮小映射后的最大振幅值的絕對(duì)值除以滿足失真率參數(shù)的最大振幅值,得到所述最大放大倍數(shù)。
其中,步驟A21包括步驟A211設(shè)定i為處理塊中各個(gè)樣本點(diǎn)的序號(hào),i的初始值為0;步驟A212利用公式(1)計(jì)算縮小映射后的樣本點(diǎn)的振幅值SmallRangeSample=SmallRangeMaxAmplitude×|Samplei|MaxAmplitude;]]>公式(1)步驟A213對(duì)保存有該振幅值SmallRangeSample的數(shù)組ScaleNum[SmallRangeSample]進(jìn)行加1操作,從而將該振幅值的樣本點(diǎn)數(shù)保存在該數(shù)組中;步驟A214將樣本點(diǎn)的序號(hào)i加1并將計(jì)算結(jié)果賦值給i,判斷i是否小于處理塊中的樣本點(diǎn)個(gè)數(shù),如果是,則返回步驟A212,否則,結(jié)束本流程。
其中,步驟A22包括步驟A221設(shè)在縮小映射后的當(dāng)前振幅值為i,該縮小映射后的當(dāng)前振幅值的初始值為縮小映射后的最大振幅值的絕對(duì)值-1;步驟A222計(jì)算縮小映射后的當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù),將該縮小映射后的當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù)與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)TotalNum相加,并將相加結(jié)果賦值給TotalNum;其中,TotalNum為變量,其初始值為0;步驟A223用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù),得到當(dāng)前失真率,判斷該失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟A224,否則,執(zhí)行步驟A225;步驟A224當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,否則,返回步驟A222;步驟A225將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值。
其中,步驟B包括步驟B1逐個(gè)將處理塊中的樣本點(diǎn)的振幅值乘以步驟A所得到的最大放大倍數(shù),分別得到樣本點(diǎn)的新的振幅值;步驟B2分別對(duì)各個(gè)樣本點(diǎn)的新的振幅值與樣本點(diǎn)最大振幅值的絕對(duì)值之間的數(shù)值關(guān)系進(jìn)行判斷如果一個(gè)樣本點(diǎn)的新的振幅值大于樣本點(diǎn)最大振幅值的絕對(duì)值,則將該樣本點(diǎn)最大振幅值的絕對(duì)值賦值給該樣本點(diǎn)的新的振幅值;和,如果一個(gè)樣本點(diǎn)的新的振幅值小于樣本點(diǎn)最大振幅值絕對(duì)值的負(fù)值,則將該樣本點(diǎn)最大振幅值絕對(duì)值的負(fù)值賦值給該樣本點(diǎn)的新的振幅值;步驟B3分別將各個(gè)樣本點(diǎn)的新的振幅值輸出。
其中,該方法進(jìn)一步包括調(diào)節(jié)所述失真率參數(shù)。
其中,該方法進(jìn)一步包括調(diào)節(jié)所述最大放大倍數(shù)參數(shù)。
其中,所述失真率參數(shù)為5%,最大放大倍數(shù)參數(shù)為5。
可見(jiàn),本發(fā)明通過(guò)設(shè)置失真率參數(shù),將超高振幅值樣本點(diǎn)忽略,計(jì)算得到最大放大倍數(shù),并利用該最大放大倍數(shù)進(jìn)行語(yǔ)音放大,從而保證了語(yǔ)音中大部分正常語(yǔ)音流的放大效果,提高了語(yǔ)音放大的質(zhì)量;另外,通過(guò)引入最大放大倍數(shù)參數(shù),使計(jì)算得到的最大放大倍數(shù)不超過(guò)該最大放大倍數(shù)參數(shù),從而避免了放大過(guò)程中在靜音期間出現(xiàn)嘯叫聲,提高了語(yǔ)音放大過(guò)程中的聽(tīng)覺(jué)質(zhì)量。
圖1為實(shí)現(xiàn)本發(fā)明的流程圖。
圖2為本發(fā)明一實(shí)施例中實(shí)現(xiàn)圖1所示步驟A的流程圖。
圖3為本發(fā)明一實(shí)施例中實(shí)現(xiàn)圖2所示步驟202的流程圖。
圖4為本發(fā)明一實(shí)施例中實(shí)現(xiàn)圖1所示步驟A的流程圖。
圖5為本發(fā)明一實(shí)施例中實(shí)現(xiàn)圖4所示步驟401的流程圖。
圖6為本發(fā)明一實(shí)施例中實(shí)現(xiàn)圖4所示步驟402的流程圖。
具體實(shí)施例方式
本發(fā)明為一種自動(dòng)放大音量的方法,該方法引入失真率參數(shù),利用該參數(shù)來(lái)忽略那些少數(shù)的超高振幅值的樣本點(diǎn),從而保證語(yǔ)音中大部分正常語(yǔ)音流的放大效果。另外,該方法還引入最大放大倍數(shù)參數(shù),利用該參數(shù)解決靜音期間的嘯叫聲問(wèn)題。
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
參見(jiàn)圖1,實(shí)現(xiàn)本發(fā)明需要以下步驟步驟A根據(jù)預(yù)先設(shè)定的失真率參數(shù),計(jì)算得到滿足該失真率的最大振幅值;樣本點(diǎn)的最大振幅值除以計(jì)算得到的滿足失真率的最大振幅值,得到最大放大倍數(shù);步驟B將語(yǔ)音處理塊中的各個(gè)樣本點(diǎn)的振幅值分別乘以最大放大倍數(shù),得到新的振幅值并輸出。
其中,為了消除在靜音期間可能出現(xiàn)的嘯叫聲問(wèn)題,在步驟A和步驟B之間,本發(fā)明還可進(jìn)一步包括以下步驟步驟C比較步驟A所得到的最大放大倍數(shù)是否大于預(yù)先設(shè)定的最大放大倍數(shù)參數(shù),如果是,則以預(yù)先設(shè)定的最大放大倍數(shù)參數(shù)作為最大放大倍數(shù),然后執(zhí)行步驟B,否則,直接執(zhí)行步驟B。
下面對(duì)步驟A和步驟B的具體實(shí)現(xiàn)進(jìn)行詳細(xì)介紹。在以下詳細(xì)介紹中,均假設(shè)當(dāng)前處理的語(yǔ)音流采樣率為8000Hz,量化等級(jí)為16位,帶符號(hào),因此,樣本點(diǎn)的最大振幅值為MaxAmplitude=215-1=32767,同時(shí),假設(shè)每個(gè)語(yǔ)音處理塊包含的樣本點(diǎn)數(shù)SampleNumPerBlock=128;本發(fā)明同樣也可適用于任何采樣率、量化等級(jí)以及任何處理塊大小的語(yǔ)音流。
一、步驟A的具體實(shí)現(xiàn)參見(jiàn)圖2,在本發(fā)明一個(gè)實(shí)施例中,實(shí)現(xiàn)步驟A需要以下步驟步驟201統(tǒng)計(jì)每個(gè)振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù);在本發(fā)明實(shí)施例中,采用數(shù)組ScaleNum[Samplei]保存每個(gè)振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù),其中,i為處理塊中的樣本點(diǎn)的序號(hào),其取值范圍為0~SampleNumPerBlock,Samplei為處理塊中第i個(gè)樣本點(diǎn)的未放大時(shí)的振幅值,其取值范圍為0~MaxAmplitude,其中,MaxAmplitude為最大振幅值的絕對(duì)值;利用該數(shù)組,統(tǒng)計(jì)每個(gè)振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)的具體實(shí)現(xiàn)為逐個(gè)取處理塊中的樣本點(diǎn),得到該樣本點(diǎn)的振幅值Samplei,然后,對(duì)保存有該振幅值Samplei的數(shù)組ScaleNum[Samplei]進(jìn)行加1操作,重復(fù)以上步驟,從而各個(gè)振幅值所對(duì)應(yīng)的數(shù)組ScaleNum[Samplei]分別存儲(chǔ)該數(shù)組對(duì)應(yīng)的振幅值Samplei所對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù);步驟202從最高振幅值的絕對(duì)值MaxAmplitude開(kāi)始,至振幅值為0結(jié)束,逐一遞減地選擇振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)SampleNumPerBlock的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟202,否則,以當(dāng)前振幅值作為滿足失真率參數(shù)的最大振幅值MaxDistortionSample;其中,參見(jiàn)圖3,利用步驟201中所述的數(shù)組ScaleNum[Samplei],具體實(shí)現(xiàn)步驟202為步驟301設(shè)當(dāng)前振幅值i,該當(dāng)前振幅值的初始值為MaxAmplitude-1,其中,MaxAmplitude為最大振幅值的絕對(duì)值,在本發(fā)明實(shí)施例中,取MaxAmplitude=32767,則該當(dāng)前振幅值的初始值為32766;步驟302計(jì)算當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù)ScaleNum[i],將該ScaleNum[i]與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)TotalNum相加,并將相加結(jié)果賦值給TotalNum;其中,TotalNum的初始值為0;步驟303~步驟304用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)SampleNumPerBlock,得到當(dāng)前失真率,判斷該當(dāng)前失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟305,否則,執(zhí)行步驟307;步驟305~步驟306當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,提示用戶計(jì)算最大放大倍數(shù)失敗,否則,返回步驟302;步驟307將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值MaxDistortionSample;以上為步驟202的具體實(shí)現(xiàn),參見(jiàn)圖2,在執(zhí)行完步驟202之后,還需要執(zhí)行步驟203,以實(shí)現(xiàn)步驟A步驟203用最大振幅值的絕對(duì)值MaxAmplitude除以滿足失真率參數(shù)的最大振幅值MaxDistortionSample,得到所述最大放大倍數(shù)Amplifier;二、步驟B的具體實(shí)現(xiàn)逐個(gè)將處理塊中的樣本點(diǎn)的振幅值乘以步驟A所得到的最大放大倍數(shù),分別得到樣本點(diǎn)的新的振幅值,分別對(duì)各個(gè)樣本點(diǎn)的新的振幅值與MaxAmplitude之間的數(shù)值關(guān)系進(jìn)行判斷如果一個(gè)樣本點(diǎn)的新的振幅值大于MaxAmplitude,則將該MaxAmplitude賦值給該樣本點(diǎn)的新的振幅值,如果一個(gè)樣本點(diǎn)的新的振幅值小于-MaxAmplitude,則將該-MaxAmplitude賦值給該樣本點(diǎn)的新的振幅值;然后,分別將各個(gè)樣本點(diǎn)的新的振幅值輸出。
以上為本發(fā)明的一個(gè)實(shí)施例的具體實(shí)現(xiàn),由于樣本點(diǎn)的最大振幅值一般較大,如32767,因此,為了能夠減少自動(dòng)放大音量過(guò)程中的計(jì)算量,參見(jiàn)圖4,還可采用如下方式實(shí)現(xiàn)步驟A步驟401將處理塊中的所有樣本點(diǎn)振幅值進(jìn)行縮小映射,然后,統(tǒng)計(jì)出映射后的每個(gè)振幅值所包含的樣本點(diǎn)個(gè)數(shù);在本發(fā)明實(shí)施例中,將樣本點(diǎn)振幅值從0~MaxAmplitude映射到較小空間域0~SmallRangeMaxAmplitude中,其中,SmallRangeMaxAmplitude為縮小映射后的最大振幅值的絕對(duì)值,根據(jù)實(shí)際測(cè)試可以得到該值,在本發(fā)明實(shí)施例中,SmallRangeMaxAmplitude=512;參見(jiàn)圖5,步驟401的具體實(shí)現(xiàn)為步驟501設(shè)定i為處理塊中各個(gè)樣本點(diǎn)的序號(hào),i的初始值為0;步驟502計(jì)算映射后的樣本點(diǎn)的振幅值SmallRangeSample=SmallRangeMaxAmplitude×|Samplei|MaxAmplitude;]]>步驟503對(duì)保存有該振幅值SmallRangeSample的數(shù)組ScaleNum[SmallRangeSample]進(jìn)行加1操作,從而將該振幅值的樣本點(diǎn)數(shù)保存在該數(shù)組中;步驟504~步驟505將樣本點(diǎn)的序號(hào)i加1并將計(jì)算結(jié)果賦值給i,判斷i是否小于SampleNumPerBlock,如果是,則返回步驟502,否則,結(jié)束本流程;參見(jiàn)圖4,執(zhí)行步驟401之后,再執(zhí)行以下步驟402步驟402從縮小映射后的最高振幅值的絕對(duì)值SmallRangeMaxAmplitude開(kāi)始,至縮小映射后的振幅值為0結(jié)束,逐一遞減地選擇縮小映射后的振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟402,否則,以當(dāng)前振幅值作為所述滿足失真率參數(shù)的最大振幅值;參見(jiàn)圖6,步驟402的具體實(shí)現(xiàn)為
步驟601設(shè)縮小映射后的當(dāng)前振幅值為i,該縮小映射后的當(dāng)前振幅值的初始值為SmallRangeMaxAmplitude-1,在本發(fā)明實(shí)施例中為512-1=511;步驟602計(jì)算縮小映射后的當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù)ScaleNum[i],將該ScaleNum[i]與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)TotalNum相加,并將相加結(jié)果賦值給TotalNum;其中,TotalNum的初始值為0;步驟603~步驟604用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)SampleNumPerBlock,得到當(dāng)前失真率,判斷該當(dāng)前失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟605,否則,執(zhí)行步驟607;步驟605~步驟606當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,提示用戶計(jì)算最大放大倍數(shù)失敗,否則,返回步驟602;步驟607將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值MaxDistortionSample;以上為步驟402的具體實(shí)現(xiàn),其中,步驟402的具體實(shí)現(xiàn)與步驟202的具體實(shí)現(xiàn)基本一致,不同之處僅在于在步驟601中,以縮小映射后的值SmallRangeMaxAmplitude-1作為i的初始值,從而大大減少了運(yùn)算量;在執(zhí)行完步驟402之后,還需要執(zhí)行步驟403,以實(shí)現(xiàn)步驟A步驟403用縮小映射后的最大振幅值的絕對(duì)值SmallRangeMaxAmplitude除以滿足失真率參數(shù)的最大振幅值MaxDistortionSample,得到所述最大放大倍數(shù)Amplifier;可見(jiàn),利用如上步驟實(shí)現(xiàn)步驟A,由于將樣本點(diǎn)的振幅值從一個(gè)很大的范圍縮小映射到一個(gè)較小范圍,并在這個(gè)范圍內(nèi)計(jì)算最大放大倍數(shù),因此,能夠大大減小計(jì)算放大倍數(shù)時(shí)的計(jì)算量,從而有利于該方法的實(shí)際應(yīng)用。
在本發(fā)明中,用戶可以根據(jù)實(shí)際需要對(duì)所述的失真率參數(shù)和最大放大倍數(shù)參數(shù)進(jìn)行調(diào)節(jié)如果用戶不允許語(yǔ)音放大后的語(yǔ)音流存在失真現(xiàn)象,并且想最大限度的放大音量,則可將失真率參數(shù)設(shè)為0,而將最大放大倍數(shù)參數(shù)設(shè)置為一個(gè)比較大的數(shù),如10;如果為了避免在靜音期間由于背景聲音被過(guò)高放大而出現(xiàn)嘯叫聲,則可將最大放大倍數(shù)參數(shù)的值調(diào)低;在本發(fā)明實(shí)施例中,優(yōu)選失真率參數(shù)5%,最大放大倍數(shù)參數(shù)為5,在此情況下接收端的語(yǔ)音放大的綜合效果最佳。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種自動(dòng)放大音量的方法,其特征在于,該方法包括步驟A根據(jù)預(yù)先設(shè)定的失真率參數(shù),計(jì)算得到滿足該失真率的最大振幅值,然后,樣本點(diǎn)的最大振幅值除以該滿足失真率的最大振幅值,得到最大放大倍數(shù);步驟B將語(yǔ)音處理塊中的各個(gè)樣本點(diǎn)的振幅值分別乘以步驟A得到的最大放大倍數(shù),得到新的振幅值并輸出。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟A和步驟B之間,該方法進(jìn)一步包括步驟C比較步驟A所得到的最大放大倍數(shù)是否大于預(yù)先設(shè)定的最大放大倍數(shù)參數(shù),如果是,則以預(yù)先設(shè)定的最大放大倍數(shù)參數(shù)作為最大放大倍數(shù),然后執(zhí)行步驟B,否則,直接執(zhí)行步驟B。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟A包括步驟A11統(tǒng)計(jì)語(yǔ)音中每個(gè)振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù);步驟A12從最高振幅值的絕對(duì)值開(kāi)始,至振幅值為0結(jié)束,逐一遞減地選擇振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟A12,否則,以當(dāng)前振幅值作為所述滿足失真率參數(shù)的最大振幅值;步驟A13用語(yǔ)音中樣本點(diǎn)的最大振幅值的絕對(duì)值除以滿足失真率參數(shù)的最大振幅值,得到所述最大放大倍數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟A12包括步驟A121設(shè)當(dāng)前振幅值i,該當(dāng)前振幅值i的初始值為樣本點(diǎn)的最大振幅值的絕對(duì)值-1;步驟A122計(jì)算當(dāng)前振幅值i對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù),將該樣本點(diǎn)個(gè)數(shù)與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)相加,并將相加結(jié)果賦值給變量TotalNum;其中,TotalNum的初始值為0;步驟A123用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù),得到當(dāng)前失真率,判斷該失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟A124,否則,執(zhí)行步驟A125;步驟A124當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,否則,返回步驟A122;步驟A125將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟A包括步驟A21將處理塊中的所有樣本點(diǎn)振幅值進(jìn)行縮小映射,然后,統(tǒng)計(jì)出映射后的每個(gè)振幅值所包含的樣本點(diǎn)個(gè)數(shù);步驟A22從縮小映射后的最高振幅值開(kāi)始,至縮小映射后的振幅值為0結(jié)束,逐一遞減地選擇縮小映射后的振幅值作為當(dāng)前振幅值,判斷當(dāng)前振幅值以及已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)之和與一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù)的比值是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則返回步驟A22,否則,以當(dāng)前振幅值作為所述滿足失真率參數(shù)的最大振幅值;步驟A23用縮小映射后的最大振幅值的絕對(duì)值除以滿足失真率參數(shù)的最大振幅值,得到所述最大放大倍數(shù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟A21包括步驟A211設(shè)定i為處理塊中各個(gè)樣本點(diǎn)的序號(hào),i的初始值為0;步驟A212利用公式(1)計(jì)算縮小映射后的樣本點(diǎn)的振幅值SmallRangeSample=SmallRangeMaxAmplitude×|Samplei|MaxAmplitude;]]>公式(1)步驟A213對(duì)保存有該振幅值SmallRangeSample的數(shù)組ScaleNum[SmallRangeSample]進(jìn)行加1操作,從而將該振幅值的樣本點(diǎn)數(shù)保存在該數(shù)組中;步驟A214將樣本點(diǎn)的序號(hào)i加1并將計(jì)算結(jié)果賦值給i,判斷i是否小于處理塊中的樣本點(diǎn)個(gè)數(shù),如果是,則返回步驟A212,否則,結(jié)束本流程。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟A22包括步驟A221設(shè)在縮小映射后的當(dāng)前振幅值為i,該縮小映射后的當(dāng)前振幅值的初始值為縮小映射后的最大振幅值的絕對(duì)值-1;步驟A222計(jì)算縮小映射后的當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù),將該縮小映射后的當(dāng)前振幅值對(duì)應(yīng)的樣本點(diǎn)個(gè)數(shù)與已經(jīng)選擇過(guò)的振幅值所對(duì)應(yīng)的樣本點(diǎn)的個(gè)數(shù)TotalNum相加,并將相加結(jié)果賦值給TotalNum;其中,TotalNum為變量,其初始值為0;步驟A223用TotalNum除以一個(gè)處理塊中的樣本點(diǎn)個(gè)數(shù),得到當(dāng)前失真率,判斷該失真率是否小于預(yù)先設(shè)定的失真率參數(shù),如果是,則執(zhí)行步驟A224,否則,執(zhí)行步驟A225;步驟A224當(dāng)前振幅值i減1,并將相減結(jié)果賦值給當(dāng)前振幅值i,然后,判斷該當(dāng)前振幅值i是否小于0,如果是,則退出本流程,否則,返回步驟A222;步驟A225將當(dāng)前振幅值i作為所述滿足失真率參數(shù)的最大振幅值。
8.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟B包括步驟B1逐個(gè)將處理塊中的樣本點(diǎn)的振幅值乘以步驟A所得到的最大放大倍數(shù),分別得到樣本點(diǎn)的新的振幅值;步驟B2分別對(duì)各個(gè)樣本點(diǎn)的新的振幅值與樣本點(diǎn)最大振幅值的絕對(duì)值之間的數(shù)值關(guān)系進(jìn)行判斷如果一個(gè)樣本點(diǎn)的新的振幅值大于樣本點(diǎn)最大振幅值的絕對(duì)值,則將該樣本點(diǎn)最大振幅值的絕對(duì)值賦值給該樣本點(diǎn)的新的振幅值;和,如果一個(gè)樣本點(diǎn)的新的振幅值小于樣本點(diǎn)最大振幅值絕對(duì)值的負(fù)值,則將該樣本點(diǎn)最大振幅值絕對(duì)值的負(fù)值賦值給該樣本點(diǎn)的新的振幅值;步驟B3分別將各個(gè)樣本點(diǎn)的新的振幅值輸出。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括調(diào)節(jié)所述失真率參數(shù)。
10.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法進(jìn)一步包括調(diào)節(jié)所述最大放大倍數(shù)參數(shù)。
11.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述失真率參數(shù)為5%,最大放大倍數(shù)參數(shù)為5。
全文摘要
本發(fā)明為一種自動(dòng)放大音量的方法,該方法包括步驟A根據(jù)預(yù)先設(shè)定的失真率參數(shù),計(jì)算得到滿足該失真率的最大振幅值,然后,樣本點(diǎn)的最大振幅值除以該滿足失真率的最大振幅值,得到最大放大倍數(shù);步驟B將語(yǔ)音處理塊中的各個(gè)樣本點(diǎn)的振幅值分別乘以步驟A得到的最大放大倍數(shù),得到新的振幅值并輸出。該方法通過(guò)設(shè)置失真率參數(shù),忽略超高振幅值樣本點(diǎn),計(jì)算得到最大放大倍數(shù),利用該最大放大倍數(shù)進(jìn)行語(yǔ)音放大,從而保證了語(yǔ)音中大部分語(yǔ)音流的放大效果,提高了語(yǔ)音放大質(zhì)量;另外,通過(guò)引入最大放大倍數(shù)參數(shù),使計(jì)算得到的最大放大倍數(shù)不超過(guò)該最大放大倍數(shù)參數(shù),從而避免了放大過(guò)程中在靜音期間出現(xiàn)嘯叫聲,提高了語(yǔ)音放大過(guò)程中的聽(tīng)覺(jué)質(zhì)量。
文檔編號(hào)H04N7/15GK1756074SQ200410080390
公開(kāi)日2006年4月5日 申請(qǐng)日期2004年9月29日 優(yōu)先權(quán)日2004年9月29日
發(fā)明者王麒 申請(qǐng)人:騰訊科技(深圳)有限公司