語音翻譯:將一段源語言音頻文件轉(zhuǎn)換成目標語言文本/語音,大大減輕傳統(tǒng)文本翻譯的讀寫成本,翻譯更輕松
Hi,您好,歡迎使用有道智云語音翻譯API接口服務(wù)。
本文檔主要針對需要集成HTTP API的技術(shù)開發(fā)工程師,詳細描述語音翻譯能力相關(guān)的技術(shù)內(nèi)容。
如果您有與我們商務(wù)合作的需求,可以通過以下方式聯(lián)系我們:
商務(wù)郵箱: AIcloud_Business@corp.youdao.com
如果您對文檔內(nèi)容有任何疑問,可以通過以下幾種方式聯(lián)系我們:
客服QQ:1906538062
智云翻譯技術(shù)交流QQ 1群: 652880659
智云翻譯技術(shù)交流QQ 2群: 669384425
智云翻譯技術(shù)交流QQ 3群: 807539209
智云翻譯技術(shù)交流QQ 4群: 936752411
聯(lián)系郵箱: zhiyun@corp.youdao.com
溫馨提示:
語音翻譯API接口提供有道的語音翻譯服務(wù),包含了中文和其他有道自有語種的互譯功能。您只需要通過調(diào)用有道語音翻譯API,傳入待翻譯的音頻文件,并指定要翻譯的源語言(支持源語言語種自動檢測)和目標語言種類,以POST方式請求就可以得到相應(yīng)的翻譯結(jié)果。
有道語音翻譯API HTTPS地址:
https://openapi.youdao.com/speechtransapi
注:上傳的語音文件時長不能超過15s,文件大小不能超過2M。
調(diào)用方在集成語音翻譯API時,請遵循以下規(guī)則。
規(guī)則 | 描述 |
---|---|
傳輸方式 | HTTPS |
請求方式 | POST |
字符編碼 | 統(tǒng)一使用 UTF-8 編碼 |
請求格式 | 表單 |
響應(yīng)格式 | JSON |
調(diào)用API需要向接口發(fā)送以下字段來訪問服務(wù)。
字段名 | 類型 | 含義 | 必填 | 備注 |
---|---|---|---|---|
q | text | 要翻譯的音頻文件的Base64編碼字符串 | True | 必須是UTF-8編碼 |
from | text | 源語言 | True | 參考下方的 支持語言 |
to | text | 目標語言 | True | 參考下方的 支持語言 |
appKey | text | 應(yīng)用ID | True | 可在應(yīng)用管理 查看 |
salt | text | UUID | True | uuid,唯一通用識別碼 |
sign | text | 簽名 | True | sha256(應(yīng)用ID+input+salt+curtime+應(yīng)用密鑰) |
signType | text | 簽名類型 | True | v3 |
format | text | 語音文件的格式, 目前只支持wav,不區(qū)分大小寫 | true | wav |
rate | text | 采樣率,推薦 16000 采用率 | true | 16000 |
channel | text | 聲道數(shù), 僅支持單聲道,請?zhí)顚懝潭ㄖ? | true | 1 |
type | text | 上傳類型, 僅支持Base64上傳,請?zhí)顚懝潭ㄖ? | true | 1 |
ext | text | 翻譯結(jié)果音頻格式,支持mp3,默認mp3 | false | mp3 |
voice | text | 翻譯結(jié)果發(fā)音選擇 | false | 0為女聲,1為男聲。默認為女聲 |
version | text | 接口版本 | false | v1 |
簽名生成方法如下:
signType=v3;
sign=sha256(應(yīng)用ID
+input
+salt
+curtime
+應(yīng)用密鑰
);
其中,input的計算方式為:input
=q前10個字符
+q長度
+q后10個字符
(當q長度大于20)或input
=q字符串
(當q長度小于等于20);
注意:
應(yīng)用ID+q+salt+應(yīng)用密鑰
字符串時,q
不需要做 URL encode,在生成簽名之后,發(fā)送 HTTP 請求之前才需要對要發(fā)送的 q
做URL encode。返回的結(jié)果是json格式,包含字段與FROM和TO的值有關(guān),具體說明如下:
字段 | 含義 |
---|---|
tSpeakUrl | 翻譯結(jié)果發(fā)音地址,翻譯成功一定存在 |
errorCode | 翻譯結(jié)果錯誤碼,一定存在 |
query | 源語言文本,翻譯成功一定存在 |
translation | 翻譯結(jié)果,翻譯成功一定存在 |
dict | text,詞典deeplink |
webdict | text,詞典web deeplink |
speakUrl | 源語言發(fā)音地址,翻譯成功一定存在 |
使用good單詞查詢作為示例進行說明:
發(fā)送請求,調(diào)用接口:
{
"q":"xxx", //xxx為音頻的base64編碼
"salt":123,
"docType":"json",
"format":"wav",
"channel":1,
"sign":"ACE8373C54C82A9C793A480B55138F3E",
"type":1,
"version":"v1",
"rate":16000,
"signType":"v1",
"appKey":"test",
"from":"zh-CHS",
"to":"en"
}
輸出結(jié)果與FROM和TO的值有關(guān):
如果源語言和目標語言一致,直接返回識別結(jié)果。
若不一致,按如下格式返回如下結(jié)果:
{
"tSpeakUrl": "https://openapi.youdao.com/ttsapi?q=北京科技館&langType=en&sign=40133A29285AD7F85D62DC9EBFE36955&salt=1512458805233&appKey=apiTest", //翻譯結(jié)果發(fā)音地址,翻譯成功一定存在
"query": "北京科技館", //識別結(jié)果,翻譯成功一定存在
"translation": [
"Beijing science and technology museum"
], //翻譯結(jié)果
"errorCode": "0", //錯誤碼。一定存在
"dict": {
"url": "yddict://m.youdao.com/dict?le=eng&q=%E5%8C%97%E4%BA%AC%E7%A7%91%E6%8A%80%E9%A6%86"
}, //詞典deeplink
"webdict": {
"url": "http://m.youdao.com/dict?le=eng&q=%E5%8C%97%E4%BA%AC%E7%A7%91%E6%8A%80%E9%A6%86"
}, //webdict deeplink
"speakUrl": "https://openapi.youdao.com/ttsapi?q=%E5%8C%97%E4%BA%AC%E7%A7%91%E6%8A%80%E9%A6%86&langType=zh-CHS&sign=25FA4EFF0F453867B8D5EAD9C0EF5D07&salt=1512458805232&appKey=zhudytest123" //源語言發(fā)音地址
}
英文名 | 中文名 | 代碼 | |
---|---|---|---|
Mandarin (China) | 中文 | zh-CHS | |
English (US) | 英文 | en | |
English (Australia) | 英文(澳大利亞) | en-AUS | |
English (GB) | 英文(英國) | en-GBR | |
English (India) | 英文(印度) | en-IND | |
Japanese | 日文 | ja | |
Korean | 韓文 | ko | |
French | 法文 | fr | |
Spanish | 西班牙文 | es | |
Portuguese (Portugal) | 葡萄牙文 | pt | |
Russian | 俄文 | ru | |
German | 德文 | de | |
Arabic | 阿拉伯文 | ar | |
Indonesian | 印尼文 | id | |
Catalan | 加泰隆語 | ca | |
Czech | 捷克語 | cs | |
Danish | 丹麥語 | da | |
Greek | 希臘語 | el | |
Finnish | 芬蘭語 | fi | |
French (Canada) | 法語(加拿大) | fr-CAN | |
Hebrew | 希伯來語 | he | |
Hindi | 印地語 | hi | |
Hungarian | 匈牙利語 | hu | |
Italian | 意大利語 | it | |
Dutch | 荷蘭語 | nl | |
Norwegian | 挪威語 | no | |
Polish | 波蘭語 | pl | |
Portuguese (Brazil) | 葡萄牙語(巴西) | pt-BRA | |
Romanian | 羅馬尼亞語 | ro | |
Slovak | 斯洛伐克語 | sk | |
Swedish | 瑞典語 | sv | |
Thai | 泰語 | th | |
Turkish | 土耳其語 | tr | |
Cantonese | 粵語 | yue | |
Mandarin (Taiwan) | 普通話(中國臺灣) | zh-TWN |
注意
格式支持:wav格式(不壓縮、pcm編碼)。
采樣率:推薦16k。
編碼:16bit位深的單聲道
格式 | 代碼 |
---|---|
wav | wav |
支持格式 | 音頻大小上限 | 單次最大請求時長(s) | 每小時最大查詢次數(shù) | 支持語言 |
---|---|---|---|---|
wav | 2M(編碼后) | 15 | 3000 | 中/英/日/韓等,詳見支持的語言列表 |
錯誤碼 | 含義 |
---|---|
101 | 缺少必填的參數(shù),首先確保必填參數(shù)齊全,然后,確認參數(shù)書寫是否正確。 |
102 | 不支持的語言類型 |
103 | 翻譯文本過長 |
104 | 不支持的API類型 |
105 | 不支持的簽名類型 |
106 | 不支持的響應(yīng)類型 |
107 | 不支持的傳輸加密類型 |
108 | 應(yīng)用ID無效,注冊賬號,登錄后臺創(chuàng)建應(yīng)用和實例并完成綁定,可獲得應(yīng)用ID和應(yīng)用密鑰等信息 |
109 | batchLog格式不正確 |
110 | 無相關(guān)服務(wù)的有效實例,應(yīng)用沒有綁定服務(wù)實例,可以新建服務(wù)實例,綁定服務(wù)實例。注:某些服務(wù)的翻譯結(jié)果發(fā)音需要tts實例,需要在控制臺創(chuàng)建語音合成實例綁定應(yīng)用后方能使用。 |
111 | 開發(fā)者賬號無效 |
112 | 請求服務(wù)無效 |
113 | q不能為空 |
114 | 不支持的圖片傳輸方式 |
201 | 解密失敗,可能為DES,BASE64,URLDecode的錯誤 |
202 | 簽名檢驗失敗,如果確認應(yīng)用ID和應(yīng)用密鑰的正確性,仍返回202,一般是編碼問題。請確保翻譯文本 q 為UTF-8編碼. |
203 | 訪問IP地址不在可訪問IP列表 |
205 | 請求的接口與應(yīng)用的平臺類型不一致,確保接入方式(Android SDK、IOS SDK、API)與創(chuàng)建的應(yīng)用平臺類型一致。如有疑問請參考入門指南 |
206 | 因為時間戳無效導(dǎo)致簽名校驗失敗 |
207 | 重放請求 |
301 | 辭典查詢失敗 |
302 | 翻譯查詢失敗 |
303 | 服務(wù)端的其它異常 |
304 | 會話閑置太久超時 |
401 | 賬戶已經(jīng)欠費停 |
402 | offlinesdk不可用 |
411 | 訪問頻率受限,請稍后訪問 |
412 | 長請求過于頻繁,請稍后訪問 |
1001 | 無效的OCR類型 |
1002 | 不支持的OCR image類型 |
1003 | 不支持的OCR Language類型 |
1004 | 識別圖片過大 |
1201 | 圖片base64解密失敗 |
1301 | OCR段落識別失敗 |
1411 | 訪問頻率受限 |
1412 | 超過最大識別字節(jié)數(shù) |
2003 | 不支持的語言識別Language類型 |
2004 | 合成字符過長 |
2005 | 不支持的音頻文件類型 |
2006 | 不支持的發(fā)音類型 |
2201 | 解密失敗 |
2301 | 服務(wù)的異常 |
2411 | 訪問頻率受限,請稍后訪問 |
2412 | 超過最大請求字符數(shù) |
3001 | 不支持的語音格式 |
3002 | 不支持的語音采樣率 |
3003 | 不支持的語音聲道 |
3004 | 不支持的語音上傳類型 |
3005 | 不支持的語言類型 |
3006 | 不支持的識別類型 |
3007 | 識別音頻文件過大 |
3008 | 識別音頻時長過長 |
3009 | 不支持的音頻文件類型 |
3010 | 不支持的發(fā)音類型 |
3201 | 解密失敗 |
3301 | 語音識別失敗 |
3302 | 語音翻譯失敗 |
3303 | 服務(wù)的異常 |
3411 | 訪問頻率受限,請稍后訪問 |
3412 | 超過最大請求字符數(shù) |
4001 | 不支持的語音識別格式 |
4002 | 不支持的語音識別采樣率 |
4003 | 不支持的語音識別聲道 |
4004 | 不支持的語音上傳類型 |
4005 | 不支持的語言類型 |
4006 | 識別音頻文件過大 |
4007 | 識別音頻時長過長 |
4201 | 解密失敗 |
4301 | 語音識別失敗 |
4303 | 服務(wù)的異常 |
4411 | 訪問頻率受限,請稍后訪問 |
4412 | 超過最大請求時長 |
5001 | 無效的OCR類型 |
5002 | 不支持的OCR image類型 |
5003 | 不支持的語言類型 |
5004 | 識別圖片過大 |
5005 | 不支持的圖片類型 |
5006 | 文件為空 |
5201 | 解密錯誤,圖片base64解密失敗 |
5301 | OCR段落識別失敗 |
5411 | 訪問頻率受限 |
5412 | 超過最大識別流量 |
9001 | 不支持的語音格式 |
9002 | 不支持的語音采樣率 |
9003 | 不支持的語音聲道 |
9004 | 不支持的語音上傳類型 |
9005 | 不支持的語音識別 Language類型 |
9301 | ASR識別失敗 |
9303 | 服務(wù)器內(nèi)部錯誤 |
9411 | 訪問頻率受限(超過最大調(diào)用次數(shù)) |
9412 | 超過最大處理語音長度 |
10001 | 無效的OCR類型 |
10002 | 不支持的OCR image類型 |
10004 | 識別圖片過大 |
10201 | 圖片base64解密失敗 |
10301 | OCR段落識別失敗 |
10411 | 訪問頻率受限 |
10412 | 超過最大識別流量 |
11001 | 不支持的語音識別格式 |
11002 | 不支持的語音識別采樣率 |
11003 | 不支持的語音識別聲道 |
11004 | 不支持的語音上傳類型 |
11005 | 不支持的語言類型 |
11006 | 識別音頻文件過大 |
11007 | 識別音頻時長過長,最大支持30s |
11201 | 解密失敗 |
11301 | 語音識別失敗 |
11303 | 服務(wù)的異常 |
11411 | 訪問頻率受限,請稍后訪問 |
11412 | 超過最大請求時長 |
12001 | 圖片尺寸過大 |
12002 | 圖片base64解密失敗 |
12003 | 引擎服務(wù)器返回錯誤 |
12004 | 圖片為空 |
12005 | 不支持的識別圖片類型 |
12006 | 圖片無匹配結(jié)果 |
13001 | 不支持的角度類型 |
13002 | 不支持的文件類型 |
13003 | 表格識別圖片過大 |
13004 | 文件為空 |
13301 | 表格識別失敗 |
15001 | 需要圖片 |
15002 | 圖片過大(1M) |
15003 | 服務(wù)調(diào)用失敗 |
17001 | 需要圖片 |
17002 | 圖片過大(1M) |
17003 | 識別類型未找到 |
17004 | 不支持的識別類型 |
17005 | 服務(wù)調(diào)用失敗 |
本部分描述如何把其他格式的音頻轉(zhuǎn)成符合語音識別輸入要求的格式文件。
語音識別底層使用的是wav格式,因此推薦使用wav格式音頻。音頻格式轉(zhuǎn)換推薦使用ffmpeg。
pcm保存的是未壓縮的音頻信息,沒有頭文件
16bits編碼是指每次采樣信息用2個字節(jié)保存。
16000采樣率,是指1秒采樣16000次,常見的音頻是44100HZ,即一秒采樣44100次。
單聲道: 只有一個聲道。
根據(jù)這些信息,可以得出:
1ms的16采樣率音頻文件大小是 2*16 = 32字節(jié) 。
1ms的8采樣率音頻文件大小是 2*8 = 16字節(jié),由此即可得到音頻的長度。
ffmpeg是一個自由軟件,可以運行音頻、視頻多種格式的錄影、轉(zhuǎn)換、流功能,包含libavcodec--這是一個用于多個項目中的音頻、視頻的解碼器庫,以及l(fā)ibavformat--一個音頻和視頻格式轉(zhuǎn)換庫。
ffmpeg官網(wǎng):https://www.ffmpeg.org/
ffmpeg的github地址:https://github.com/FFmpeg/FFmpeg
ffmpeg默認支持pcm和wav(pcm編碼)格式,額外的編譯參數(shù)如下:
—enable-libopencore-amrnb 支持amr-nb(8000 采樣率) 讀寫
—enable-libopencore-amrwb 支持amr-wb(16000 采樣率) 讀取
—enable-libvo-amrwbenc 支持amr-wb(16000 采樣率) 寫入
—enable-libmp3lame 支持mp3 寫入
ffmpeg -codecs 可以查看所有的格式:
D..... = Decoding supported # 讀取
.E.... = Encoding supported # 寫入
..A... = Audio codec # 音頻編碼
....L. = Lossy compression # 有損
.....S = Lossless compression # 無損
DEA..S pcm_s16le PCM signed 16-bit little-endian
DEA.LS wavpack WavPack
DEA.L. mp3 MP3 (MPEG audio layer 3)
DEA.L. amr_nb AMR-NB (Adaptive Multi-Rate NarrowBand)
DEA.L. amr_wb AMR-WB (Adaptive Multi-Rate WideBand)
-i 設(shè)定輸入流
-f 設(shè)定格式
-ss 開始時間
wav、mp3、amr格式都自帶頭部,包含采樣率、編碼、多聲道等信息。而pcm為原始音頻信息,沒有頭部信息。wav(pcm編碼)就是pcm文件加了wav的頭部信息。
輸入wav、mp3、amr:
-i audio.wav/audio.mp3/audio.amr
輸入pcm格式:pcm需要額外告知編碼格式,采樣率,單聲道信息
-f s16le -ac 1 -ar 16000 -i 16k.pcm //單聲道、16000采樣率、16bits編碼的pcm文件
-ar 設(shè)定采樣率
-ac 設(shè)定聲音的channel數(shù)
-acodec 設(shè)定聲音編解碼器,未設(shè)定時則使用與輸入流相同的編解碼器
-an 不處理音頻
-ab 設(shè)置比特率(單位:bit/s,也許老版是kb/s),前面ac設(shè)置為立體聲時要以一半的比特率來設(shè)置,比如192kbps的就設(shè)置為96,轉(zhuǎn)換默認比特率都較小,要聽到高品質(zhì)聲音的話建議設(shè)到160kbps(80)以上。
在原始采樣率 大于或者接近16000的時候,推薦使用16000,8000采樣率會降低識別效果。
輸出wav和amr時,如果沒有指定聲音編解碼器,則會選擇默認的編碼器。
輸出pcm:
-f s16le -ac 1 -ar 16000 16k.pcm // 單聲道 16000 采樣率 16bits編碼 pcm文件
輸出wav:
-ar 1 -ar 16000 16k.wav //單聲道 16000 采樣率 16bits編碼 pcm編碼的wav文件
amr-nb:全稱是:Adaptive Multi-Rate,自適應(yīng)多速率,是一種音頻編碼文件格式,專用于有效地壓縮語音頻率。amr-nb格式只能選 8000采樣率。bit rates越高音質(zhì)越好,但是文件越大
bit rates 4.75k, 5.15k, 5.9k, 6.7k, 7.4k, 7.95k, 10.2k or 12.2k
輸出 amr-wb 格式,采樣率 16000。 bit rates越高音質(zhì)越好,但是文件越大。
6600 8850 12650 14250 15850 18250 19850 23050 23850
-y 覆蓋同名文件
-v 日志輸出 基本如-v ERROR -v quiet等
ffmpeg {常用參數(shù)} {輸入音頻參數(shù)} {輸出音頻參數(shù)}
ffmpeg -y -i 16k.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 16k.pcm
ffmpeg -y -f s16le -ar 16000 -ac 1 -acodec pcm_s16le 16k.pcm 16k.wav
D:ffmpegbin>ffmpeg -y -i test.m4a -acodec pcm_s16le -f s16le -ac 1 -ar 16000 16k.pcm