近期項(xiàng)目中有個(gè)需求就是要實(shí)現(xiàn)類似微信或者支付寶的收款時(shí)的語(yǔ)音播報(bào)功能,于是筆者就開(kāi)始了漫長(zhǎng)的踩坑之路。

東安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,東安網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為東安近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的東安做網(wǎng)站的公司定做!
剛開(kāi)始討論實(shí)現(xiàn)方案時(shí),安卓的小伙伴說(shuō)可以使用WebSocket + 訊飛語(yǔ)音在線合成實(shí)現(xiàn)。于是最初的幾天筆者自己也一直在這條路上走了很久,基本功能都已經(jīng)實(shí)現(xiàn)了,項(xiàng)目在前臺(tái)的時(shí)候,基本沒(méi)問(wèn)題。但是項(xiàng)目一進(jìn)入后臺(tái)大概半分鐘的時(shí)間,就無(wú)法播報(bào)了。原因是iOS項(xiàng)目如果不做任何處理的話,在進(jìn)入后臺(tái)大概30s之后,程序就會(huì)進(jìn)入類似休眠的狀態(tài),然后就不會(huì)再進(jìn)行任何操作了
跟安卓的同事討論之后,發(fā)現(xiàn)安卓有方法可以讓程序一直在后臺(tái)處于活躍狀態(tài),于是筆者也開(kāi)始找尋保持項(xiàng)目后臺(tái)運(yùn)行的方法,大概有兩種
在這里我們并沒(méi)有發(fā)現(xiàn),程序在后臺(tái)收到推送時(shí),作相應(yīng)處理的方法,哪到底能不能收到推送后就進(jìn)行處理呢?
iOS 10 之后 iOS推出了Notification Service Extension,我們可以在收到推送之后,通過(guò)這個(gè)Extension 我們可以有三十秒的時(shí)間來(lái)對(duì)這個(gè)推送進(jìn)行處理
完成之后長(zhǎng)這樣
然后我們配置一下NotificationService
然后我們看下NotificationService.swift文件
在完成上述操作之后,再次收到推送的話,就會(huì)走NotificationService的邏輯了,可以打斷點(diǎn)或者Log測(cè)試一下
需要注意的是 在推送的內(nèi)容中 必須配置mutable-content字段,結(jié)構(gòu)大致如下
做完上邊的操作之后,我們可以知道什么時(shí)候去播報(bào)語(yǔ)音了,但是語(yǔ)音又要怎么去播報(bào)呢?
筆者這邊也是試過(guò)幾個(gè)方案,下邊一一說(shuō)來(lái)
筆者剛開(kāi)始使用訊飛發(fā)現(xiàn)不行,然后又測(cè)試了系統(tǒng)自帶的AVSpeech,發(fā)現(xiàn)也不好用,查資料才知道,蘋果在近期的版本中,停用的在NotificationService中播放語(yǔ)音的功能,之前的某個(gè)版本應(yīng)該可以這么操作。好吧,此方案Pass
既然不讓我播,那我存起來(lái)總可以了吧,測(cè)試發(fā)現(xiàn)訊飛在線生成是可以的,也可以存到本地,但。。。是,UNMutableNotificationContent的sound好像只支持提前添加到項(xiàng)目中的文件,并不支持立即生成之后存到本地,然后再設(shè)置的功能。。。
筆者在項(xiàng)目中預(yù)先生成的文件如下(語(yǔ)音包通過(guò)百度語(yǔ)音開(kāi)放平臺(tái)在線生成 百度語(yǔ)音在下生成(拉到中間就有了) )
比如說(shuō)我要播放“支付寶到賬100元”,我就會(huì)發(fā)放多個(gè)通知,依次播放wx-pre,1,bai,yuan這幾個(gè)語(yǔ)音,連貫起來(lái)就能達(dá)到要求
筆者能力有限,暫時(shí)想到的方法就是這個(gè),有好的方法可以多多分享,溝通
下載和安裝,現(xiàn)在我們使用的最新版本是ibm viavoice9.1簡(jiǎn)體中文版,很多網(wǎng)站都有下載,大家可以用百度搜索,下載來(lái)的文件格式一般為iso鏡像,所以要用虛擬光驅(qū)安裝。軟件的安裝沒(méi)有什么特別之處,一路下一步就行了,當(dāng)然也可以在安裝向?qū)Ю镄薷陌惭b信息,要注意的是一定要關(guān)閉殺毒軟件,由于軟件在安裝過(guò)程中需要重起電腦,重起后還要繼續(xù)安裝,所以最好將殺毒軟件的自動(dòng)運(yùn)行也暫時(shí)關(guān)閉。語(yǔ)音訓(xùn)練:這是使用viavoice最關(guān)鍵的一步,對(duì)于盲人來(lái)說(shuō)也是難度最大的環(huán)節(jié),如果順利過(guò)了這一關(guān),我們的工作也就完成了七八成了,剩下的軟件操作其實(shí)并不復(fù)雜。程序安裝完成后,程序自動(dòng)開(kāi)始運(yùn)行,首先會(huì)出現(xiàn)一段語(yǔ)音提示,緊接著探出用戶向?qū)АR筝斎胗脩裘瓦x擇音頻設(shè)備,采用默認(rèn)即可,如果有兩塊聲卡就要選擇其中之一。點(diǎn)下一步,探出音頻設(shè)置向?qū)Вc(diǎn)擊測(cè)試按鈕,出現(xiàn)一段回放音樂(lè),系統(tǒng)音量測(cè)試成功,下一步進(jìn)入麥克風(fēng)設(shè)置。選擇頭戴式麥克風(fēng),下一步,在音頻輸出設(shè)備的列表里仍然要選擇頭戴式麥克風(fēng)。下一步,要求連接好麥克風(fēng),不用管它,繼續(xù)下一步。開(kāi)始測(cè)試麥克風(fēng),點(diǎn)測(cè)試即開(kāi)始測(cè)試環(huán)境噪音,完成后在點(diǎn)下一步。這一部系統(tǒng)詢問(wèn)你是否有信號(hào)適配器,一定要選是,繼續(xù)下一步。這時(shí)系統(tǒng)要調(diào)整麥克風(fēng)音量。在測(cè)試過(guò)程中環(huán)境要保持安靜,關(guān)閉音箱,帶好耳麥,讓讀屏的聲音從耳麥里發(fā)出,并且要將讀屏的語(yǔ)速調(diào)到最慢,因?yàn)橄旅嬉S讀屏朗讀系統(tǒng)給出的語(yǔ)句。點(diǎn)擊開(kāi)始,讀出系統(tǒng)給出的語(yǔ)句即可,這段文字可以用四六件切換來(lái)找到,其內(nèi)容如下:"這里有一小段文章,您必須用正常、輕松的語(yǔ)調(diào)將其讀出。請(qǐng)?jiān)诙温渑c語(yǔ)句之間自然停頓。計(jì)算機(jī)將利用這一過(guò)程調(diào)整其音量。當(dāng)這一過(guò)程完成以后,您會(huì)聽(tīng)到一小段結(jié)束提示音,系統(tǒng)將顯示聲音的品質(zhì)。在聽(tīng)到這一小段提示音之前,您必須不斷地重復(fù)這段文章。"這時(shí)可以用小鍵盤的加減號(hào)及點(diǎn)號(hào)[暫停]來(lái)控制跟讀的速度及停頓。待出現(xiàn)聲音提示在點(diǎn)下一步。現(xiàn)在就要開(kāi)始創(chuàng)建個(gè)人語(yǔ)音模型了。這一步至關(guān)重要,會(huì)直接影響將來(lái)語(yǔ)音識(shí)別的效果。在點(diǎn)下一步語(yǔ)音模型的創(chuàng)建就真正開(kāi)始了。系統(tǒng)要求你讀出下面的文字,四六鍵切換到六可編輯文字處,tab鍵切換到開(kāi)始按鈕,點(diǎn)擊及開(kāi)始,用加減號(hào)配合點(diǎn)號(hào)跟隨讀屏朗讀。如果系統(tǒng)跟不上你的朗讀速度,便發(fā)出聲音提示,此時(shí)就點(diǎn)擊暫停,在點(diǎn)繼續(xù)重復(fù)朗讀。讀完后系統(tǒng)提示正在處理請(qǐng)稍候。系統(tǒng)會(huì)進(jìn)行語(yǔ)音訓(xùn)練,訓(xùn)練完畢后,最簡(jiǎn)單的語(yǔ)音模型就建立完畢了,當(dāng)然可以想像得到,這樣輕松建立起來(lái)的模型效果并不是很好。稍等片刻在點(diǎn)下一步。這一部是分析你的語(yǔ)音,以便讓系統(tǒng)了解你的說(shuō)話方式。選擇開(kāi)始錄音單選按鈕,繼續(xù)下一步。在列表里選擇一篇文章,四六鍵切換到十二可編輯文字處,tab鍵切換到開(kāi)始按鈕,點(diǎn)擊開(kāi)始,還是用加減號(hào)配合點(diǎn)號(hào)跟讀,如果我們的說(shuō)話沒(méi)有被系統(tǒng)識(shí)別出來(lái),屏幕上的文字就不會(huì)往下滾動(dòng),并發(fā)出聲音提示。這時(shí)可以按加減號(hào)重復(fù)朗讀,直到出現(xiàn)新的文字,才可以繼續(xù)往下朗讀。為了提高識(shí)別率,建議將列表中的四篇文章全部讀完。讀完文章以后點(diǎn)下一步。系統(tǒng)提示正在處理請(qǐng)稍候,等幾分鐘后點(diǎn)完成。到此,個(gè)人用戶(語(yǔ)音模型)建立完畢,我們可以正式開(kāi)始使用語(yǔ)音輸入了。語(yǔ)音輸入:語(yǔ)音訓(xùn)練及語(yǔ)音模型的建立雖然比較繁瑣,但是軟件的使用卻非常簡(jiǎn)單。其功能只有聲控命令和語(yǔ)音聽(tīng)寫。在程序組中啟動(dòng)ibm viavoice語(yǔ)音中心,程序運(yùn)行后在通知區(qū)域工具欄里出現(xiàn)viavoice的圖標(biāo)。我們首先要設(shè)置麥克風(fēng)開(kāi)關(guān)狀態(tài)的熱鍵,在停止語(yǔ)音輸入時(shí)要立刻官麥,否則會(huì)出現(xiàn)大量的亂碼、或發(fā)出錯(cuò)誤命令導(dǎo)致不必要的麻煩。右鍵單擊通知區(qū)域里的viavoice圖標(biāo),在探出菜單里選用戶選項(xiàng),右光標(biāo),點(diǎn)viavoice選項(xiàng)。在探出的對(duì)話框中選啟動(dòng)選項(xiàng)卡,選中麥克風(fēng)狀態(tài)和發(fā)現(xiàn)問(wèn)題時(shí)啟動(dòng)識(shí)別向?qū)С绦驈?fù)選礦,要不老有識(shí)別向?qū)鰜?lái)?yè)v亂。在21熱鍵域無(wú)處加入快捷鍵。如果創(chuàng)建了幾個(gè)用戶,就要在用戶選項(xiàng)卡里選擇你自己創(chuàng)建的用戶,否則識(shí)別效果會(huì)很差。其它選項(xiàng)涉及到高級(jí)設(shè)置,采用默認(rèn)設(shè)置即可,帶操作熟練后可在作改動(dòng)。點(diǎn)確定關(guān)閉對(duì)話框。此時(shí)按下剛才設(shè)置的快捷鍵打開(kāi)麥克風(fēng),[當(dāng)然在菜單里也有這個(gè)命令],就進(jìn)入了語(yǔ)音輸入狀態(tài)了。第一次使用會(huì)有語(yǔ)音提示。此時(shí)你就可以向計(jì)算機(jī)下達(dá)任何語(yǔ)音命令,讓它為你做你想做的任何事情。想要了解當(dāng)前有什么命令可用,只要說(shuō)出當(dāng)前命令及,就會(huì)調(diào)出當(dāng)前可用命令。要了解當(dāng)前幫助,就說(shuō)學(xué)習(xí)內(nèi)容,就會(huì)調(diào)出當(dāng)前幫助。要想啟動(dòng)某個(gè)程序就說(shuō)出啟動(dòng)某程序,例如想要啟動(dòng)大智慧,就說(shuō)啟動(dòng)大智慧,大智慧就隨即啟動(dòng)了。又如在ie里面,只要說(shuō)出某個(gè)鏈接的名稱即可進(jìn)入該頁(yè)面,說(shuō)出任何菜單和按鈕名稱即可執(zhí)行相應(yīng)的命令,你說(shuō)出收藏夾,收藏夾就立刻打開(kāi)了,在說(shuō)出收藏夾中網(wǎng)站的名稱,就會(huì)打開(kāi)該網(wǎng)站。viavoice支持幾乎所有的已安裝的或?qū)⒁惭b的應(yīng)用程序的聲控操作和直接聽(tīng)寫。只要應(yīng)用程序有文本編輯框就可以進(jìn)行語(yǔ)音聽(tīng)寫,但要先說(shuō)直接聽(tīng)寫,進(jìn)入文字聽(tīng)寫模式,結(jié)束聽(tīng)寫后要說(shuō)停止直接聽(tīng)寫,回到命令輸入模式。如在qq的聊天界面上,激活文本輸入框,說(shuō)出要輸入的內(nèi)容,即可在編輯框中自動(dòng)寫出相應(yīng)的文字。不過(guò)初期使用識(shí)別的準(zhǔn)確率不可能達(dá)到很高,需要進(jìn)行一些手工修改,但是它有自學(xué)習(xí)功能,隨著使用的增多,識(shí)別的準(zhǔn)確率會(huì)越來(lái)越高。在進(jìn)行聽(tīng)寫時(shí),請(qǐng)您使用連續(xù)語(yǔ)音,并注意同時(shí)口述標(biāo)點(diǎn)符號(hào)和編排命令,比如句號(hào),逗號(hào)和另起一段。盡量使用正常的節(jié)奏講話,不要太快,也不要太慢。盡量不要吞音或者滑音,也不要故意拉長(zhǎng)或者略讀某些詞語(yǔ)。盡量不要連讀,也沒(méi)有必要故意對(duì)某些音進(jìn)行重讀。開(kāi)始時(shí)您會(huì)可能會(huì)講話比較快。請(qǐng)耐心一點(diǎn),放慢速度。過(guò)了一段時(shí)間之后,您就會(huì)發(fā)現(xiàn)完全可以在不損失準(zhǔn)確率的情況下提高講話速率。不要對(duì)著麥克風(fēng)大聲講話,請(qǐng)使用盡量平和的語(yǔ)音。正確佩戴麥克風(fēng)對(duì)語(yǔ)音識(shí)別率非常重要。請(qǐng)確認(rèn)麥克風(fēng)接收頭(在海綿套的里面)離您的嘴角大約一個(gè)拇指的距離,并檢查麥克風(fēng)上的白點(diǎn)正對(duì)著您的嘴部。不要將海綿套拿走,它可以起過(guò)濾作用。 不要將麥克風(fēng)正對(duì)您的嘴部,以防受呼吸影響。每次使用麥克風(fēng)時(shí)請(qǐng)不要變動(dòng)麥克風(fēng)的位置,例如麥克風(fēng)的距離時(shí)遠(yuǎn)時(shí)近。如果進(jìn)行大量文字錄入,建議使用系統(tǒng)自帶的字處理程序[語(yǔ)音板]。說(shuō)出聽(tīng)寫到語(yǔ)音板,語(yǔ)音板隨即啟動(dòng)。這是一個(gè)類似寫字板的編輯工具,語(yǔ)音板擁有寫字板的所有功能而且增加了聽(tīng)寫能力。語(yǔ)音聽(tīng)寫與其他應(yīng)用程序中的直接聽(tīng)寫的注意事項(xiàng)基本一致,要想執(zhí)行語(yǔ)音命令,在聽(tīng)寫過(guò)程中稍作停頓,說(shuō)出菜單命令即可。值得注意的是糾錯(cuò)窗口的使用。 在聽(tīng)寫的過(guò)程中,ViaVoice可能會(huì)發(fā)生誤識(shí)。您可以用糾錯(cuò)窗口對(duì)誤識(shí)詞進(jìn)行糾錯(cuò),以便ViaVoice以后提高識(shí)別率;或者讓ViaVoice分析您已有的文檔,以便讓ViaVoice熟悉您的措辭和行文方式。在口述一段文字以后,查找誤識(shí)的詞。如果要對(duì)某個(gè)詞或短語(yǔ)進(jìn)行糾錯(cuò),先選中該詞,然后說(shuō)出糾錯(cuò)就會(huì)探出糾錯(cuò)窗口。如果正確的詞已經(jīng)位于候選詞列表中,念出該詞的序號(hào)。這一動(dòng)作將糾正所選的詞或短語(yǔ)。如果正確的詞不在候選詞列表中,你可以單擊糾錯(cuò)窗口的文本編輯框,輸入正確的詞/短語(yǔ)。念糾錯(cuò)或者按回車進(jìn)行確定。z在聽(tīng)寫完一篇文章以后,建議用文檔分析程序?qū)倢懙奈恼逻M(jìn)行分析,從而修正語(yǔ)言模型,提高識(shí)別率。
兩種處理方式
1、將獲取到的音頻文件通過(guò)base64加密直接通過(guò)xmpp的消息體發(fā)送過(guò)去,然后解碼;
2、通過(guò)http請(qǐng)求的方式將音頻文件上傳到服務(wù)器,然后將音頻文件的下載地址通過(guò)xmpp消息體發(fā)送過(guò)去,另外一個(gè)客戶端下載。
音頻文件建議轉(zhuǎn)碼為amr,這種格式的音頻文件比較小。
又拍云的 iOS 短視頻 SDK 用下來(lái)效果還不錯(cuò)的。 這個(gè)短視頻 SDK 包含短視頻拍攝、編輯、合成部分,包含斷點(diǎn)錄制、分段回刪、美顏、濾鏡、貼紙、視頻剪輯、視頻壓縮、本地轉(zhuǎn)碼在內(nèi)的 30 多種功能。 支持自定義界面和二次開(kāi)發(fā)。
新聞名稱:ios語(yǔ)音聊天開(kāi)發(fā),ios語(yǔ)音控制
文章地址:http://chinadenli.net/article25/dsgdcci.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、微信公眾號(hào)、移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)、商城網(wǎng)站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)