楊 平
?
基于iOS平臺交互式語音錄播系統(tǒng)的設(shè)計與實現(xiàn)
楊平
摘 要:針對教學中涉及語音錄制、播放和控制的需求,設(shè)計并實現(xiàn)了基于 iOS平臺交互式語音錄播系統(tǒng)。系統(tǒng)具有錄音、播放、語音識別和語音交互功能。系統(tǒng)界面簡潔,體驗良好。對各功能進行了具體的分析,描述了各功能的設(shè)計思想和實現(xiàn)技術(shù)。系統(tǒng)設(shè)計思想也可以應(yīng)用到需要錄音和語音識別的其他領(lǐng)域,具有一定的商業(yè)和推廣價值。
關(guān)鍵詞:iOS;語音識別;語音錄播系統(tǒng);錄音
iOS是由蘋果公司開發(fā)的手持設(shè)備操作系統(tǒng),早期是為iPhone設(shè)計的,后來陸續(xù)應(yīng)用于iPod Touch、iPad、Apple TV、Car Play、Apple Watch等蘋果產(chǎn)品上。截止至2014年10月,iOS和 Android已經(jīng)占據(jù)了全球智能手機系統(tǒng)市場份額的96.4%。目前蘋果公司以近萬億美元的市值在國際上遙遙領(lǐng)先。蘋果產(chǎn)品的用戶體驗極佳,深受用戶喜愛。有些學校已將 iPad引進課堂進行輔助教學,增強了課堂的互動性和教學效率。iOS平臺上的應(yīng)用也與日俱增。
錄音軟件是iPhone和iPad移動設(shè)備必備的工具,給工作、學習和生活帶來了很大的便利。iOS系統(tǒng)自帶的錄音機軟件是一款操作簡單、高質(zhì)量的軟件,具有高音質(zhì)的錄音文件輸出和良好的用戶體驗。但是,系統(tǒng)自帶的錄音軟件的功能也相對較少。同樣蘋果商店的其他錄音軟件一般只是實現(xiàn)錄音、播放、文件的存儲和文件的管理;有的功能強的錄音軟件還具有錄音文件的編輯、網(wǎng)絡(luò)分享等功能。
通過對很多常用錄音軟件的試用,發(fā)現(xiàn)針對教學過程的實際需求,這些軟件還存在一些功能上的缺陷和不足:
1)用戶錄詞語時候,如果一次性不間斷的錄制完全部詞語或句子,那在聽寫的時候,用戶需要一邊寫一邊按“暫停”按鈕,一旦錯過,或者當前的內(nèi)容沒有寫好,還要重新操作設(shè)備再倒回合適的位置,才能繼續(xù)完成聽寫作業(yè)。這讓用戶容易分心,做作業(yè)的效率也低下;
2)錄詞語時候,可以特意留些時間作為詞語間的間隔,這樣在聽寫時,用戶一般不需要按“暫停”按鈕,但錄音時這些停留的時間也是浪費。而且,詞語間時間間隔的長短很難掌控。
考慮這些不足,作者設(shè)計了一個交互式語音錄播系統(tǒng)。系統(tǒng)除了具有傳統(tǒng)錄音機軟件的基本功能外,特別增加了語音識別和語音交互功能,讓用戶使用起來更加便捷。
1.1 聲音處理包
在iOS應(yīng)用開發(fā)中,播放音頻主要采用AudioToolbox. framework和 AVFoundation.framework。前者主要用于短音頻的播放,通常用于一些特效音頻播放,對于這類音頻不需要進行進度、循環(huán)等控制。后者常用于播放一些較長的音頻,對于這些音頻的播放通常需要進行精確的控制[1]。所以,本系統(tǒng)錄音機功能的實現(xiàn)使用的是AV Foundation 框架。
錄音機應(yīng)用程序使用了 AV Foundation 框架中的 AV Audio Recorder實現(xiàn)錄音功能。使用框架中的AVAudioPlayer來實現(xiàn)播放功能[2]。AVAudioPlayer可以看成一個播放器,它支持多種音頻格式,而且能夠進行進度、音量、播放速度等控制。由于 AVAudioPlayer一次只能播放一個音頻文件,所以本系統(tǒng)中多個音頻的播放是通過創(chuàng)建多個播放器對象來完成。要用這兩個類,需要添加頭文件:#import
1.2 語音識別包
關(guān)于語音識別功能的核心技術(shù)可以采用第三方開發(fā)包。諸如此類的語音識別包有很多,本系統(tǒng)采用的是訊飛語音識別開發(fā)包。使用這SDK需要做如下事情:
1)到訊飛官方網(wǎng)站的開發(fā)者專區(qū)(http://open.voicecloud .cn/developer.php)先注冊一個開發(fā)者賬號。
2)登陸之后到自己的個人中心創(chuàng)建一個應(yīng)用,填寫好相關(guān)信息,然后等待審核通過。
3)應(yīng)用審核通過后,選擇對應(yīng)平臺的SDK下載。
4)解壓下載的壓縮包,從包中選擇部分 framework添加到工程中,添加的庫名見表1所示:

表1 添加的庫名表
具體在BuildingPhases|Link Binary With Libraries中設(shè)置。如果使用了離線識別,需要增加libc++.dylib。
5)導(dǎo)完類庫之后,在建好的工程里添加需要用的頭文件。
#import
#import
#import "iflyMSC/IFlySpeechUtility.h"
#import "iflyMSC/IFlySpeechUnderstander.h"
2.1 系統(tǒng)功能
1)錄音功能。主要功能是當用戶按下“開始錄音”按鈕時,系統(tǒng)設(shè)置錄音的參數(shù)并開始錄音;當松開按鈕,則錄音結(jié)束,并將以當前的系統(tǒng)時間命名錄音文件后再進行本地化存儲,同時顯示到列表視圖中供用戶查看和編輯。錄制時,有進度條控件顯示音頻的大小。
2)播放功能。主要功能是當用戶點擊“開始播放”按鈕時,開始按列表視圖中音頻文件的順序播放。另外,還具有暫停播放和停止播放功能。
3)語音交互功能。該功能的實現(xiàn)關(guān)鍵問題是系統(tǒng)播放完一個音頻后,下一個音頻什么時候播放。有兩種解決方案:一種方案是播放一個音頻后,等待一段時間,等待的時間是音頻文件的播放時間乘以一個系數(shù),該系數(shù)根據(jù)用戶寫字的速度快慢自行設(shè)定;另一種方案是系統(tǒng)暫停播放聽寫作業(yè),錄音機播放一個預(yù)先錄制好“寫好了嗎?”的音頻文件咨詢用戶,當用戶聽寫完,說“好了”、“下一個”或“寫完了”等關(guān)鍵詞時,再繼續(xù)播放下一個音頻文件。當用戶說“再來一遍”、“重報”或“重復(fù)”等關(guān)鍵詞時,系統(tǒng)就再重播一遍剛才的音頻。第一種方案適合課堂上的作業(yè)聽寫,不會因為個人個別詞的聽寫慢而等待;而第二種方案采用人機交互,適合個人的作業(yè)聽寫,更加人性化。
4)文件管理。主要功能是向左滑動刪除表視圖中的音頻文件,同樣也真正意義上刪除沙盒中的文件。也可以點擊“全選”和“全部刪除”按鈕刪除所有文件。
2.2 系統(tǒng)設(shè)計流程
1)錄音功能模塊。具體流程如圖1所示:

圖1 錄音功能流程圖
2)播放和識別功能模塊。具體流程如圖2所示:

圖2 播放和識別功能流程圖
2.3 MVC設(shè)計模式
MVC設(shè)計模式,即模型(model)- 視圖(view) - 控制器(controller)模式,是一種典型的將業(yè)務(wù)邏輯和數(shù)據(jù)顯示分離的方法。
Cocoa Touch中的MVC模式與傳統(tǒng)的MVC模式略有不同,Cocoa Touch中的模型和視圖之間是不能進行任何通信的,所有的通信都是通過控制器完成。如圖3所示:

圖3 Cocoa Touch 的MVC模式
Cocoa Touch的MVC模式,控制器對象會分析用戶在視圖對象上的操作,將新數(shù)據(jù)或者更改過的數(shù)據(jù)傳遞給視圖對象,從而將模型對象的數(shù)據(jù)顯示在視圖對象上[3]。
模型主要用于保存少量的應(yīng)用程序狀態(tài)數(shù)據(jù),一般繼承于NSObject類。本系統(tǒng)中的模型有對控制器提供的音頻文件名進行播放、暫停、停止的類。
視圖是用于發(fā)出各種業(yè)務(wù)操作的行為,能讓用戶看到并能與之交互的元素。根類一般是UIView類,常使用Interface Builder來創(chuàng)建視圖組件,特殊情況下,會使用代碼實現(xiàn)。本系統(tǒng)中界面上的按鈕、視窗、表視圖、進度條等都是視圖。
控制器作為中間核心環(huán)節(jié),主要通過委托、事件和通知來實現(xiàn)。控制器組件繼承于UIViewController基類。本系統(tǒng)是一個單視圖的應(yīng)用,所以只寫了一個控制器類,負責接收視圖發(fā)出的一系列業(yè)務(wù)操作行為,將其通知給模型進行數(shù)據(jù)解析,之后從模型獲取業(yè)務(wù)邏輯,將其在界面上顯示出來。
3.1 功能實現(xiàn)的核心代碼
1)錄音功能
_currentFile = [self getSavePath];
NSDictionary *setting=[self getAudioSetting];
NSError *error=nil;
_recorder=[[AVAudioRecorderalloc]initWithURL:_current
Filesettings:setting error:&error]; //創(chuàng)建錄音機
_recorder.delegate=self;
_recorder.meteringEnabled=YES;//監(jiān)控聲波
2)語音識別功能
//開始監(jiān)聽
bool ret = [_iFlySpeechUnderstanderstartListening];
[_iFlySpeechUnderstanderstopListening];
NSMutableString *result = [[NSMutableStringalloc] init];
//開始識別
NSDictionary *dic = results [0];
for (NSString *key in dic) {
[resultappendFormat:@"%@",key];}
NSLog(@"識別結(jié)果:%@",result);
3)播放功能
AVAudioPlayer *player=[self musices][filename];
if (!player) {NSString
*urlStr=[NSSearchPathForDirectoriesInDomains(NSDocument Directory, NSUserDomainMask, YES) lastObject]; //音頻文件的URL
url-
Str=[urlStrstringByAppendingPathComponent:filename]; NSURL *url=[NSURL fileURLWithPath:urlStr]; play
er=[[AVAudioPlayeralloc]initWithContentsOfURL:urlerror:nil];
//創(chuàng)建播放器}
[playerprepareToPlay];
[selfmusices][filename]= player;
if (![player isPlaying]) [player play];
3.2 開發(fā)和測試環(huán)境
開發(fā)環(huán)境的操作系統(tǒng)是 OS X10.10.5,編譯器是XCode7.1.1,開發(fā)語言用的是Objective-C。程序在模擬器上運行良好。從Xcode7開始,即使沒有開發(fā)者賬號,iOS的應(yīng)用也可以在真機上測試。真機的操作系統(tǒng)是iOS9.1,測試的錄音質(zhì)量高,運行速度快。因為做了屏幕適配,又分別在iPhone6和iPad不同尺寸和型號的設(shè)備上測試,都能正常運行。
3.3 系統(tǒng)界面
因篇幅關(guān)系,只截取了部分運行界面。如圖4所示:

圖4 錄音/編輯/播放識別運行界面
從左到右分別是:點擊“按住錄音”按鈕時,正在錄音的界面;點擊“全選”按鈕時,錄音文件處于編輯狀態(tài)的界面;點擊“聽寫開始”按鈕播放音頻過程中的界面。
論文設(shè)計并實現(xiàn)了基于iOS平臺交互式語音錄播系統(tǒng)。系統(tǒng)具有錄音、播放、文件管理、語音識別和語音交互功能。本系統(tǒng)已經(jīng)投入使用,系統(tǒng)界面簡潔,體驗良好。學生使用系統(tǒng)完成聽寫作業(yè),該項作業(yè)就不用父母陪伴輔助完成,不僅節(jié)省了父母的時間,更有助于提高學生自主學習的能力和學習效率。教師使用系統(tǒng),可以減少教學過程中不必要的重復(fù)工作。
目前系統(tǒng)還存在一些不足,如下功能有待后期完善。1)對錄音的內(nèi)容進行識別,識別后存儲的文件名采用系統(tǒng)時間加錄音內(nèi)容,便于后期查找;2)增加文件夾顯示和管理功能。學生階段復(fù)習時,對以往的音頻隨機抽取進行復(fù)習或測試;3)界面不夠美觀,擬請專業(yè)美工人員設(shè)計,完善后發(fā)布App Store,供更多的人使用。
本系統(tǒng)設(shè)計思想和框架同樣可以應(yīng)用于其他領(lǐng)域。例如需要用到錄音和語音識別的智能語音表單的錄入、數(shù)據(jù)的存儲和數(shù)據(jù)校對等。因此,具有一定的商用價值和推廣意義。
參考文獻
[1] 楊正洪,鄭齊心,曹星編著.iOS6編程揭秘—iPhone與iPad應(yīng)用開發(fā)入門[M].武漢:清華大學出版社.2013.5.
[2] 王淵博.iOS系統(tǒng)下音頻播放的實現(xiàn)方法[J].科技信息,2014(15):105-106.
[3] 傳智播客高教產(chǎn)品研發(fā)部編著.iOS開發(fā)項目化入門教程[M].北京:人民郵電出版社.2015.9.
中圖分類號:TP302.1
文獻標志碼:A
文章編號:1007-757X(2016)07-0039-03
收稿日期:(2016.01.07)
基金項目:上海市教育委員會科研創(chuàng)新重點項目(14ZZ170)
作者簡介:楊 平(1977-),女,安徽池州人,上海杉達學院,信息與科學技術(shù)學院,講師,碩士,研究領(lǐng)域:信號處理、移動應(yīng)用開發(fā),上海,201209
Design and Implementation of Interactive Voice Recording and Playing System Based on iOS Platform
Yang Ping
(School of Information Science and Technology, Shanghai Sanda University, Shanghai 201209, China)
Abstract:To meet the demands involving recording、playing and controlling in the teaching process, this paper designs and implements an interactive voice recording and playing system based on iOS platform, which has the functions of recording, playing, speech recognition and interaction. Though the system interface is simple, it provides a good user experience. The paper analyzes each function and describes the corresponding design idea and implementation technology. The system design idea may also be applied into other fields which need recording and speech recognition. Thus, it has some commercial and promotion value.
Key words:iOS; Speech Recognition; Voice Recording and Playing System; Record