專利名稱:語音聊天室的伴奏方法及裝置的制作方法
技術領域:
本發(fā)明涉及通信技術領域,尤其涉及一種語音聊天室的伴奏方法及裝置。
背景技術:
在語音聊天室環(huán)境下,如果某一個用戶要唱歌,那么要么清唱,只使用麥克風來錄制聲音;要么打開聲卡提供的立體聲混音功能,在唱歌的同時提供背景伴奏聲。使用立體聲混音進行聲音采集實際上是驅動程序不直接從麥克風的線路來采集聲音,而是從聲卡中采集聲音,因此如果用戶在使用麥克風錄制的時候,同時打開一個播放器播放背景音樂,那么這個時候就有兩路的聲音會被傳到聲卡中,一路是麥克風米集的聲音,一路是播放器播放的聲音,這個時候兩路聲音進入到了聲卡,聲卡會自動將這兩路的聲音混成一路,我們只要這個時候從聲卡緩沖中將聲音采集出來就可以得到混合好的聲音。這個方式基本上被很多人使用。但是使用立體聲混音有一個致命的缺陷——我們沒辦法控制進入聲卡的聲音,因為所有的聲音要進行播放實際上都是提交到聲卡的緩沖中,那么本來我們只想要麥克風錄制的聲音和背景音樂的聲音,但是這個時候有可能windows系統(tǒng)發(fā)出警告聲音了,這個警告聲音也進入到了聲卡緩沖了,我們通過立體聲混音采集到的聲音變成三路聲音的混合了,這不是我們想要的。而在聊天室中最重要的是有聊天室中其他人的聲音,而這個聲音也會在用戶的機器上播放出來。此外,在一些筆記本電腦上,因為涉及到知識產權糾紛,現(xiàn)有的聲卡基本上不帶立體聲混音模塊,因此,用戶只是使用清唱,無法實現(xiàn)以背景音樂進行伴奏。綜上,現(xiàn)有技術還不能實現(xiàn)語音聊天室質量良好的類似卡拉OK的伴奏模式供用戶使用,亟待改進。
發(fā)明內容
本發(fā)明的主要目的在于公開一種語音聊天室的伴奏方法及裝置,以提供語音聊天室質量良好的伴奏模式供用戶使用。為達上述目的,本發(fā)明實施例提供一種語音聊天室的伴奏方法,應用于嵌入語音聊天室WEB網頁的客戶端插件中,所述客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,該方法包括:在所述伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份;將備份的伴奏聲音與麥克風的錄音進行混音;將混音數(shù)據(jù)發(fā)送給所述語音聊天室的語音服務器。為達上述目的,本發(fā)明實施例還提供一種語音聊天室的伴奏裝置,該裝置包括嵌入語音聊天室WEB網頁的客戶端插件,所述客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,以在所述伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份;所述客戶端插件還包括混音模塊,用于將備份的伴奏聲音與麥克風的錄音進行混音,以及將混音數(shù)據(jù)發(fā)送給所述語音聊天室的語音服務器。與現(xiàn)有技術相比,本發(fā)明實施例至少具有以下優(yōu)點:有效規(guī)避了采用聲卡立體聲混音所導致的混入接收的聊天室其它用戶的聲音或第三方聲音的問題。能夠得到某個指定的播放器播放的伴奏聲音,并且能夠得到麥克風的聲音,然后將這兩路聲音以原聲加伴奏模式混成一路傳到聊天室中,這個聊天室中的其他人就可以聽到優(yōu)美的歌聲了。
圖1是本發(fā)明實施例公開的語音聊天室的伴奏方法流程示意圖。
具體實施例方式下面結合說明書附圖對本發(fā)明的具體實現(xiàn)方式做一詳細描述。實施例一本發(fā)明實施例公開一種語音聊天室的伴奏方法,應用于嵌入語音聊天室WEB網頁的客戶端插件中,該客戶端插件包括通過windows系統(tǒng)的hook (鉤子)機制被加載到伴奏播放器的進程空間中的鉤子。如圖1所示,該伴奏方法包括以下步驟:步驟S1、在伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份。步驟S2、將備份的伴奏聲音與麥克風的錄音進行混音。步驟S3、將混音數(shù)據(jù)發(fā)送給該語音聊天室的語音服務器。本實施例中,將鉤子加載到伴奏播放器的進程空間中包括但不限于以下方式:獲取所述伴奏播放器的調用堆棧,然后在導入或導出地址表(IAT,ImportAddress Table, EAT, Export Address Table)中,將所述調用堆棧中向聲卡緩存提交聲音數(shù)據(jù)的底層函數(shù)地址替換成所述鉤子的函數(shù)地址。以伴奏播放器為千千靜聽為例,其被替換的底層函數(shù)的API為DirectSoundCreate8 (...)、IDirectSound8::CreateSoundBuffer (0x07d7fe60, 0x07d7feb4, NULL)、IDirectSoundBuffer:: Lock (...)、IDirectSoundBuffer:: Unlock(0x083d0028, 580608, NULL, 0)、IDirectSoundBuffer:: Lock (...)、IDirectSoundBuffer:: Unlock(0x083d0028, 4608, NULL, 0)、IDirectSoundBuffer:: Lock (...)、以及 DirectSoundBuffer:: Unlock(0x083dl228, 4608,NULL, 0)。上述函數(shù)重定向方式米用的是HOOK APKApplication Programming Interface,應用程序編程接口)技術中的一種;在其他實施方式中,還可以通過嵌入?yún)R編代碼實現(xiàn)函數(shù)的重定向等等,相關技術以及鉤子的安裝、注入等皆屬于現(xiàn)有技術,可參照MSDN(Micix)SOftDeveloper Network,微軟開發(fā) 者網絡)中的hooks章節(jié)以及2009年5月刊《計算機應用與軟件》第26卷第5期《HOOK API時代碼注入方法和函數(shù)重定向技術研究》,作者為解放軍炮兵學院二系:舒敬榮、朱安國、齊善明,在此不作贅述。實施例二與上述實施例一相對應的,本實施例公開一種語音聊天室的伴奏裝置(省略附圖)。該裝置包括嵌入語音聊天室WEB網頁的客戶端插件。該客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,以在該伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份;該客戶端插件還包括混音模塊,用于將備份的伴奏聲音與麥克風的錄音進行混音,以及將混音數(shù)據(jù)發(fā)送給該語音聊天室的語音服務器。綜上,本發(fā)明實施例公開的語音聊天室的伴奏方法及裝置至少具有以下優(yōu)點:有效規(guī)避了采用聲卡立體聲混音所導致的混入接收的聊天室其它用戶的聲音或第三方聲音的問題。能夠得到某個指定的播放器播放的伴奏聲音,并且能夠得到麥克風的聲音,然后將這兩路聲音以原聲加伴奏模式混成一路傳到聊天室中,這個聊天室中的其他人就可以聽到優(yōu)美的歌聲了。以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領域的技術人員能思之的變化都應落入本發(fā)明的保護范圍。
權利要求
1.一種語音聊天室的伴奏方法,應用于嵌入語音聊天室WEB網頁的客戶端插件中,其特征在于,所述客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,該方法包括: 在所述伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份; 將備份的伴奏聲音與麥克風的錄音進行混音; 將混音數(shù)據(jù)發(fā)送給所述語音聊天室的語音服務器。
2.根據(jù)權利要求1所述的語音聊天室的伴奏方法,其特征在于,將鉤子加載到伴奏播放器的進程空間中包括: 獲取所述伴奏播放器的調用堆棧; 在導入或導出地址表中,將所述調用堆棧中向聲卡緩存提交聲音數(shù)據(jù)的底層函數(shù)地址替換成所述鉤子的函數(shù)地址。
3.一種語音聊天室的伴奏裝置,其特征在于,包括嵌入語音聊天室WEB網頁的客戶端插件,所述客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,以在所述伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份;所述客戶端插件還包括混音模塊,用于將備份的伴奏聲音與麥克風的錄音進行混音,以及將混音數(shù)據(jù)發(fā)送給所述語音聊天室的語音服務器。
全文摘要
本發(fā)明公開一種語音聊天室的伴奏方法及裝置,以提供語音聊天室質量良好的伴奏模式供用戶使用。本發(fā)明公開的該伴奏方法應用于嵌入語音聊天室WEB網頁的客戶端插件中,所述客戶端插件包括通過windows系統(tǒng)的hook機制被加載到伴奏播放器的進程空間中的鉤子,其伴奏方法包括在所述伴奏播放器向聲卡緩存輸送伴奏聲音之前,通過鉤子攔截伴奏聲音,并將攔截的伴奏聲音備份;將備份的伴奏聲音與麥克風的錄音進行混音;將混音數(shù)據(jù)發(fā)送給所述語音聊天室的語音服務器。
文檔編號G10L13/00GK103198826SQ20131010797
公開日2013年7月10日 申請日期2013年3月29日 優(yōu)先權日2013年3月29日
發(fā)明者高輝榮, 靳國文 申請人:貴陽朗瑪信息技術股份有限公司