本文匯總了您在使用語音識別服務時的常見問題。
語音識別類常見問題主要分為以下幾類:
功能類
性能類
效果類
SDK使用類
計費類
功能類
實時轉寫說話有停頓,但是語音識別不斷句怎么辦?
如果是vad斷句情況下,實時轉寫的vad斷句依賴對音頻中靜音數據的判斷,如果上游不發送靜音音頻,服務端則無法識別用戶說話是否有停頓。如果確認是上游沒有發送靜音音頻,則系統通過對實時轉寫服務的時間戳和實際音頻的時間戳對比。如果發現服務端的判斷音頻時長比實際音頻時長短,說明靜音時服務端沒有收到用戶發的靜音數據。
在開啟語義斷句情況下,有可能是后處理模型的效果問題。
解決方案:在用戶停頓時持續地向服務端發送靜音數據。
語音識別能自動斷開多句話嗎?
實時語音識別服務可以斷開多句話。一句話識別服務的每個請求只對應一句話,無法斷開。
語音識別服務支持離線功能嗎?
目前不支持本地離線的語音識別,必須把音頻數據發送到服務端做識別。
語音識別支持哪些模型?
可以在智能語音交互控制臺中項目功能配置里查看具體的模型種類,目前有8k和16k兩種采樣率的模型,每個采樣率下面又有多個領域模型,可以按需選擇。
語音識別是否可以混合識別極少量英文單詞和字母?
可以的,中文普通話模型支持對中英文混雜的音頻進行識別。
開啟ITN(逆文本規整)后,中文數字混合時為什么并不是全部轉為阿拉伯數字?
是否要轉成阿拉伯數字,系統是用模型來判斷的,并不是所有數字都需要轉成阿拉伯數字,模型的判斷主要準則是一般書面文本中常用的形態。
錄音文件識別的enable_sample_rate_adaptive和極速版本里的sample_rate,這兩個接口是一樣的嗎?
不是。極速版的sample_rate就是采樣率,enable_sample_rate_adaptive是個開關,極速版默認采樣率16k,不需要這個開關。
錄音轉文本能區分坐席和客戶嗎?
語音識別引擎只能區分出說話的不同角色,角色對應的身份引擎是無法識別的,需要用戶從業務的角度自行判斷。建議您在存儲錄音時按照角色分類存儲。
智能語音交互的一句話識別,標點符號是根據什么來判斷逗號和句號的?
結合音頻的聲學特征和對識別結果文本做語音分析后做標點處理。
離線文件轉寫如何區分左右聲道?
語音識別引擎無法區分左右聲道,當多聲道音頻送入語音識別服務進行識別時,返回結果會用channel_id字段來標記多個音軌。如果采集順序固定,可以根據channel_id區分對應聲道。具體可參見接口說明。
語音識別可以支持多個詞表嗎?
一次可使用一個詞表,每次只能傳一個vocabulary_id,如果覺得不夠可以使用定制模型。具體可參見使用POP API創建業務專屬熱詞。
設置錄音文件識別服務的版本,"4.0"和"2.0"兩個版本有什么區別?
由于歷史原因,早期發布的錄音文件識別服務(默認為2.0版本)的回調方式和輪詢方式的識別結果在JSON字符串的風格和字段上均有不同。錄音文件識別服務在4.0版本對回調方式做了優化,使得回調方式的識別結果與輪詢方式的識別結果保持一致,均為駝峰風格的JSON格式字符串。具體可參見接口說明。
在電話端支持哪些國家的語音識別?
電話8k語音目前支持的外語語種為英語,非電話16k語音支持更多外語語種。語種模型支持列表詳見功能特性。
在語音識別的服務中,有沒有請求參數是音頻文件地址,返回參數是轉寫文本?
可使用錄音文件識別功能,具體請參見接口說明。
實時語音轉寫能和錄音文件識別一樣加入音軌ID嗎?
不能,音軌ID是錄音文件專用的。實時轉寫只有單通道語音,不需要channel區分。
錄音文件識別可以生成SRT字幕文件嗎?
目前沒有。需要根據返回結果中的時間信息自己進行拼接。
語音識別服務支持哪些編碼格式的音頻?
每種服務支持的格式不盡相同,請參見各服務中的說明。您可以使用常見音頻編輯軟件如Audacity,查看音頻文件的編碼格式。
語音識別服務支持哪些采樣率?
一般支持8000 Hz、16000 Hz的采樣率。 電話客服場景通常是8000采樣率,如果是手機App、PC端工具、網頁H5類場景,通常是16000 Hz采樣率(可能會有32、44k采樣率,但開發時需要調用方將采樣率調整為16k)。其他采樣率的錄音數據需要預先自行轉碼。
錄音文件轉寫可以支持其他采樣率,例如32k、44k等等。
怎么查看音頻文件的采樣率?
可以使用常見音頻編輯軟件如Audacity查看音頻文件的采樣率,也可以使用開源命令行工具FFmpeg查看。
語音識別服務支持的方言模型和語種都有哪些?
語音識別目前支持的語種和方言模型如下:
最新的模型支持情況可以登錄智能語音交互控制臺,在項目配置中查看。
語音識別能否自動斷開多句話?
實時語音識別服務可以斷開多句話;一句話識別服務的每個請求只對應一句話,無法斷開。
實時識別和錄音文件轉寫分別支持哪些語音格式?
性能類
語音識別的識別準確率怎么計算?
行業通常使用錯誤率來統計識別效果,中文常用CER(字錯誤率),英文常用WER(詞錯誤率)。計算方式:(插入錯誤字數ins+刪除錯誤字數del+替換錯誤字數sub)/總字數。以下圖為例:這批數據的準確率=(14365-74-385-1706)/14365=84.93%??焖儆嬎惴绞綖椋?00-15.07=84.93。
語音識別模型的字準率能達到多少?
關于達摩院智能語音交互語音識別準確度的數字,我們通過了CNAS(國家軟件測試中心)的評測,國家軟件中心對語音識別算法準確度測試中,在60分貝以下的降噪環境中,用普通話在距離耳麥1厘米的位置,以240字/分鐘的勻速朗讀樣本量1207字的測試下,我們經過5輪測試的結果,識別準確率均大于98%。該準確度經過國家軟件測試中心的標準認證。
而在現實的使用過程當中,可能會受到耳麥質量、背景雜音、口音差異等原因導致準確度有一定的偏差,對于數據格式為8k、16bit、雙通道分軌(用戶或客服雙軌)的pcm或者wav格式,信噪比在20dB以上的語音,絕大部分商用場景下我們能保障85%的準確度,確保您有效使用。
錄音文件識別極速版延遲是多少?
錄音文件識別極速版服務承諾10秒內完成30分鐘的音頻識別,指的是從收到全部音頻到完成識別的時間,音頻上傳的速度和客戶端帶寬等因素相關,時長可能會有不同。在服務端返回的識別結果中包含latency字段,記錄了服務端處理時長。
8k模型可以識別16k的音頻嗎?
不可以。8K模型和16K模型只支持識別對應采樣率的音頻。
錄音文件識別極速版調用頻率有限制嗎?
沒有。但對并發有限制,并發數在控制臺上查看。
粵語的識別準確率是多少?
粵語8k、16k識別準確率在80~95%之間,實際結果受語料數據與發音標準程度影響。使用不同服務準確率會有略微區別(相對5%),準確率排名整體為:錄音文件識別>一句話識別>實時語音識別。
15秒左右的錄音文件識別大概需要多久能轉換成文本呢?
錄音文件識別是離線API。對于免費用戶的識別任務在24小時內完成并返回識別文本;付費用戶的識別任務在3小時內完成并返回識別文本。60秒以內的短音頻建議客戶使用一句話識別,時效更好。
語音轉文本有沒有優先級?比如現在正在轉寫任務,突然有緊急的轉寫任務,能調整處理優先級嗎?
暫不支持這個操作,文件轉寫目前的時效性還是比較快的。
針對兩個用戶打電話場景,哪個模型效果比較好?
目前建議都使用新一代端到端“識音石”識別模型,綜合效果性能比較好。
服務請求時長限制?
一句話識別支持60秒以內的實時語音。
實時語音識別不限制時長。
“流式”模式和“非流式”模式識別的區別?
“非流式”模式也稱為普通模式,普通模式下,服務判斷用戶整句話說完后才返回一次識別結果;而“流式”模式下用戶一邊說話一邊返回識別結果,在句子結束的識別結果前會有很多中間結果。
什么是ASR尾點延遲?
尾點延遲的定義是調用端發送音頻結束到完成識別的時間。
目前語音實時識別,如一句話識別、實時轉寫接口的延遲在300毫秒左右,視模型、音頻差異而略有不同。
一句話識別RESTful接口因為批量接收音頻,識別時長和音頻時長相關。不考慮網絡開銷,一句話識別RESTful接口處理時長和音頻時長近似線性關系,簡單計算可以認為:接口處理時長=音頻時長*0.2。例如,1分鐘音頻處理時長約為12秒。實際線上性能會隨模型的不同和服務器負載略有差異。
效果類
對于識別不準的詞該如何進行優化?
首先考慮無標注優化:
使用業務相關語料進行定制語言模型優化。業務語料包括業務關鍵詞、業務相關的句子和篇章等。訓練語料中要盡可能的對詞進行泛化。(比如把“銀稅e貸是什么”、“如何辦理銀稅e貸”等等相關話術加入到訓練語料中)
針對依然識別不好的業務關鍵詞,再以復制多行或者提高模型權重的方式進行定制語言模型加強。
個別解決不好的業務關鍵詞,使用泛熱詞進行優化。
其次考慮有標注優化:
如果主要是因為口音等問題導致的整體識別效果不好,并且無標注優化方式無法解決到滿意程度,可以開始聲學模型優化。
聲學模型優化需要標注數據,標注本身也可以加入業務相關語料中進行語言模型優化。
單字識別不出來是什么原因?
因為單字發音單元短,且沒有上下文語義,所以單字的識別是難點,添加熱詞效果不一定好,建議采用定制化模型優化。
熱詞效果如果不佳是否可以自主調節權重?
人名和地名類熱詞不支持設置權重,業務專屬熱詞支持權重。目前在控制臺上創建業務專屬熱詞時不支持設置權重,如果需要調整權重您可以通過API進行維護。
錄音文件識別時間戳不準,如何解決?
可通過設置時間戳校準功能參數enable_timestamp_alignment為true來調準。詳情請參見接口說明。
語音識別太靈敏、無效聲音(噪音等)被識別出了文字怎么辦?
可以通過設定參數speech_noise_threshold
的值來修改VAD噪聲閾值。
speech_noise_threshold
參數區間是[-1,1],取值越小越靈敏,可能會有更多噪音被當成語音被誤識別;取值越大,可能更多語音段會被當成噪音而沒有被識別。例如設為0.6,如果仍覺得太靈敏,可以繼續嘗試設置為0.7。如果發現有丟字、漏識別,需要將該值調小,例如0.5、0.2甚至是-0.2等。
代碼示例:
Java
transcriber.addCustomedParam("speech_noise_threshold", -0.1);
C++
request->setPayloadParam("speech_noise_threshold",-0.1);
遠場識別為什么會經常丟字?如何提高遠場識別效果?
這是因為遠、近場的VAD閾值不一樣,建議調節參數speech_noise_threshold
。speech_noise_threshold
參數區間是[-1,1],取值越小越靈敏,可能會有更多噪音被當成語音被誤識別;取值越大,可能更多語音段會被當成噪音而沒有被識別。例如設為-0.2,如果丟字現象仍然比較嚴重,可以繼續調小至如-0.3、-0.4;如果發現較多噪聲被誤識別了,也可以適當調大,例如-0.1、0等。
ASR識別很離譜,不準確怎么辦?
一般來說,ASR模型識別率均有一定的保證。如果在所有情況下語音識別都不準確,或者識別率很低,往往需要整體考慮是否有什么地方配置錯誤,例如實際語音的采樣率(在線識別場景ASR只支持8k 16bit或者16k 16bit)、調用時設置的采樣率參數(8000或者16000)、ASR服務端模型(8k或者16k),這三者需要保持一致。
如果是公共云ASR調用,需要確認阿里云控制臺上該appkey所選擇的模型采樣率;如果是專有云ASR環境,則需要確認service/resource/asr/default/models/readme.txt 文件中所定義的采樣率。
有些詞匯總是識別不準怎么辦?
在某些情況下,確實存在某些詞匯識別不準的情況,如特定名詞。針對此現象(下面以詞匯“銀稅e貸”為例),我們建議有:
通過自學習平臺的定制語言模型訓練優化,例如把“銀稅e貸是什么”、“如何辦理銀稅e貸”等等相關話術加入到文本語料中進行訓練。
通過自學習平臺的熱詞優化,例如把“銀稅e貸”作為熱詞進行訓練,設置相應權重。
專有云可通過ASR的白名單優化,例如“銀稅e貸”更容易為誤識別為“銀稅一袋”,則可以在service/resource/asr/default/models/nn_itn/correct.list中按預定格式進行設置,第一列是誤識別的文本,第二列是正確文本,注意該操作要求重啟ASR生效。
如何提高標點斷句的效果?
默認VAD斷句,可以添加參數enable_semantic_sentence_detection
使用語義斷句。如果是實時識別,請確認中間結果(參數enable_intermediate_result
)也是開啟的。
實時場景中,已經開啟了標點斷句,為什么效果還是不理想?
可以確認下是否開啟中間結果,實時場景的語義斷句需要配合中間結果使用。
錄音文件識別存在一次請求后返回兩次相同的結果的情況嗎?
此類現象大部分是由于用戶提交的語音文件是雙聲道,且兩個聲道語音內容相同造成的。如果是這種情況,屬正?,F象,設置參數first_channel_only為true,只識別首個聲道即可解決。
實時語音識別遇到識別慢、超時問題,如何排查?
排查方式:
運行阿里云提供的示例,和您的服務對比運行狀態,記錄并提供日志信息。
記錄請求對應的taskid,方便排查問題。
客戶端使用TCPDump(Linux)/Wireshark(Windows)等抓包工具,確定網絡狀況。
為什么語音識別準確率很低,有時只識別出幾個字?
請檢查音頻數據的采樣率與管控臺應用的模型是否一致,以及音頻是否是單通道錄音。
只有錄音文件識別支持雙通道的錄音。
確認調用方式和采樣率都沒問題,識別還是不準確怎么辦?
您可以通過如下兩種方式提高識別準確率:
SDK使用類
一句話識別錄入的demo是使用Websocket進行識別展示的嗎?
是Websocket。SDK就是采用的Websocket協議,RESTful API接口是HTTP協議。SDK接口詳情請參見接口說明。
實時語音識別服務有Python SDK嗎?
暫不支持。
語音識別的返回結果JSON中endtime=-1是什么意思?
表示當前句子未結束。當語音識別模式為“流式”時,才會存在中間結果。
移動端鴻蒙Next SDK中如何修改識別語音采樣率為8000HZ或者16000HZ?
demo代碼中,使用的是16000Hz采樣率錄音、識別。 如果想要修改為8000Hz錄音、識別,則需要同時修改錄音接口采樣率參數和SDK配置采樣率參數兩個地方,以16000Hz修改為8000Hz為例:
修改
AudioCapture.ets
文件中的samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_16000
為samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_8000
。修改對應識別demo文件(.ets文件)中的初始化參數,
genInitParams()
中增加對sample_rate的設置,即object.set("sample_rate", "8000")
,其他地方無需修改。
計費類
錄音文件識別極速版不支持試用嗎?
對,錄音文件極速版暫不支持試用,需要付費才可以。