語音對語音翻譯功能會運用 AI 解讀語言,讓使用不同語言的個人和系統進行對話。您的應用程式可以使用這項功能,處理包含某種語言語音的音訊串流,並即時翻譯成其他語言。
與支援輪流對話的其他 Live API 功能不同,語音轉語音翻譯功能會持續處理音訊輸入內容,並在下列輸出內容可用時串流傳輸:
- 轉錄:從原始語言的輸入音訊串流辨識出的文字。
- 翻譯:目標語言的譯文。
- 合成音訊:以目標語言朗讀翻譯文字的音訊串流,且聲音與原始說話者相符。
支援的模型
你可以使用下列模型進行語音對語音翻譯:
| 模型版本 | 可用性等級 |
|---|---|
gemini-2.5-flash-s2st-exp-11-2025 |
私人實驗 |
輸入音訊規定
語音對語音翻譯僅支援音訊輸入。如要瞭解支援的音訊格式、轉碼器和規格 (例如取樣率),請參閱「支援的音訊格式」。
使用語音轉語音翻譯
如要使用語音對語音翻譯,請參閱下列程式碼範例:
Python
# Set language_code to your desired language, in this case, Mandarin Chinese. speech_config = SpeechConfig(language_code="cmn") config = LiveConnectConfig( response_modalities=["AUDIO"], speech_config=speech_config, input_audio_transcription=input_transcription, output_audio_transcription=output_transcription, ) audio_file = Part.from_uri(file_uri=audio_url, mime_type="audio/mpeg") contents = [audio_file] response = client.models.generate_content(model=MODEL_ID, contents=contents) display(Markdown(response.text))
Python
import asyncio # Set model generation_config CONFIG = { "response_modalities": ["AUDIO"], "speech_config": { "language_code": "cmn", }, } headers = { "Content-Type": "application/json", "Authorization": f"Bearer {bearer_token[0]}", } # Connect to the server async with connect(SERVICE_URL, additional_headers=headers) as ws: # Setup the session await ws.send( json.dumps( { "setup": { "model": MODEL, "generation_config": CONFIG, "input_audio_transcription": {}, "output_audio_transcription": {}, "enable_speech_to_speech_translation": True, } } ) ) # Receive setup response raw_response = await ws.recv(decode=False) setup_response = json.loads(raw_response.decode("ascii")) print(setup_response) msg = { "realtime_input": { "audio": { "mime_type": "audio/pcm", "data": base64.b64encode(wav_data).decode('utf-8'), } } } await ws.send(json.dumps(msg)) overall_responses = [] timeout_seconds = 10 # Set timeout to 3 seconds # Receive chucks of server response with a timeout try: while True: try: raw_response = await asyncio.wait_for(ws.recv(decode=False), timeout_seconds) response = json.loads(raw_response.decode()) server_content = response.pop("serverContent", None) if server_content is None: break # Input Transcription. input_transcription = server_content.pop("inputTranscription", None) if input_transcription is not None: raw_text = input_transcription.pop("text", None) if raw_text is not None: display(Markdown(f"**Input >** {raw_text}")) # Output Transcription. output_transcription = server_content.pop("outputTranscription", None) if output_transcription is not None: raw_text = output_transcription.pop("text", None) if raw_text is not None: display(Markdown(f"**Response >** {raw_text}")) model_turn = server_content.pop("modelTurn", None) if model_turn is not None: parts = model_turn.pop("parts", None) if parts is not None: for part in parts: pcm_data = base64.b64decode(part["inlineData"]["data"]) overall_responses.append(np.frombuffer(pcm_data, dtype=np.int16)) # End of turn # turn_complete = server_content.pop("turnComplete", None) # if turn_complete: # break except asyncio.TimeoutError: print(f"Timeout: No response received from the websocket within {timeout_seconds} seconds.") if overall_responses: display(Audio(np.concatenate(overall_responses), rate=24000, autoplay=True)) break # Exit the loop on timeout except websockets.exceptions.ConnectionClosed as e: print(f"Connection closed by exception, code: {e.code}, reason: {e.reason}") if overall_responses: display(Audio(np.concatenate(overall_responses), rate=24000, autoplay=True)) break # Exit the loop on connection closed except Exception as e: print(f"An unexpected error occurred: {e}") if overall_responses: display(Audio(np.concatenate(overall_responses), rate=24000, autoplay=True)) break # Exit the loop on other exceptions finally: try: await ws.close(code=1000, reason="Normal closure") #example close except websockets.exceptions.ConnectionClosed as e: print(f"Connection closed by exception, code: {e.code}, reason: {e.reason}") except Exception as e: print(f"An unexpected error occurred: {e}")
支援的語言
| 語言代碼 | 語言 |
|---|---|
| aa | 阿法文 (衣索比亞) |
| ab | 阿布哈茲文 |
| ace | 亞齊文 |
| ach | 阿喬利文 |
| af | 南非荷蘭文 |
| ak | 阿肯文 |
| alz | 阿盧爾語 |
| 上午 | 阿姆哈拉文 |
| 一個 | 亞拉岡文 |
| ar | 阿拉伯文 |
| as | 阿薩姆文 |
| av | 阿瓦爾文 |
| awa | 阿瓦德語 |
| ay | 艾馬拉文 |
| az | 亞塞拜然文 |
| ba | 巴什噶爾語 |
| bal | 俾路支文 |
| 封鎖 | 峇里文 |
| bbc | 巴塔克托巴語 |
| bci | 鮑勒文 |
| be | 白俄羅斯文 |
| bem | 本巴語 |
| ber | 柏柏爾 |
| bew | 巴達維語 |
| bg | 保加利亞文 |
| bgc | 哈里亞納文 |
| bho | 博杰普爾文 |
| 商業智慧 (BI) | 碧斯拉瑪文 |
| bm | 班巴拉文 |
| bn | 孟加拉文 |
| bo | 藏文 |
| br | 布列塔尼語 |
| bs | 波士尼亞文 |
| bts | 巴塔克希瑪隆功語 |
| btx | 巴塔克卡羅文 |
| ca | 加泰隆尼亞文 |
| ce | 車臣文 |
| ceb | 宿霧文 |
| cgg | 奇嘉文 |
| ch | 查莫洛文 |
| chk | 楚克文 |
| cmn | 中文 |
| cnh | 欽邦哈卡語 |
| co | 科西嘉文 |
| cr | 克里文 |
| crh | 克里米亞韃靼語 |
| crs | 塞席爾克里奧爾法文 |
| cs | 捷克文 |
| cv | 楚瓦什語 |
| cy | 威爾斯文 |
| da | 丹麥文 |
| de | 德文 |
| din | 丁卡語 |
| doi | 道格里文 |
| dov | 多姆貝語 (Dombe) |
| dv | 迪維西文 |
| dyu | 迪烏拉文 |
| dz | 宗喀語 |
| ee | 埃維文 |
| el | 希臘文 |
| en | 英文 |
| eo | 世界文 |
| es | 西班牙文 |
| et | 愛沙尼亞文 |
| eu | 巴斯克文 |
| fa | 波斯文 |
| ff | 富拉文 |
| fi | 芬蘭文 |
| fil | 菲律賓文 |
| fj | 斐濟語 |
| fo | 法羅語 |
| fon | 豐文 |
| fr | 法文 |
| 毛皮 | 佛里烏利文 |
| fy | 西弗里西亞文 |
| 正式發布版 | 愛爾蘭文 |
| gaa | 加語 |
| gd | 蓋爾文 |
| gl | 加里西亞文 |
| gn | 瓜拉尼文 |
| gu | 古吉拉特文 |
| gv | 曼島文 |
| ha | 豪薩文 |
| haw | 夏威夷文 |
| 他 | 希伯來文 |
| 嗨 | 北印度文 |
| hil | 希里蓋農語 |
| hmn | 苗文 |
| ho | 希里摩圖文 |
| 小時 | 克羅埃西亞文 |
| hrx | 亨斯里克語 |
| ht | 海地文、海地克里奧文 |
| hu | 匈牙利文 |
| hy | 亞美尼亞文 |
| hz | Herero |
| iba | 伊邦文 |
| id | 印尼文 |
| ig | 伊博文 |
| ilo | 伊洛果語 |
| 為 | 冰島文 |
| it | 義大利文 |
| iu | 伊努伊特文 |
| ja | 日文 |
| jam | 牙買加克里奧爾英文 |
| jv | 爪哇文 |
| ka | 喬治亞文 |
| kac | 克欽文 |
| kek | 凱克奇文 |
| 公斤 | 剛果文 |
| kha | 卡西文 |
| ki | 基庫猶文 |
| kj | Kuanyama |
| kk | 哈薩克文 |
| kl | 格陵蘭文 |
| 公里 | 中部高棉文 |
| kn | 卡納達文 |
| ko | 韓文 |
| kok | 貢根文 |
| kr | 卡努里文 |
| kri | 克里奧文 |
| ks | 喀什米爾文 |
| ktu | 基圖巴語 (Kituba) |
| ku | 庫德文 |
| kv | 科米文 |
| kw | 康瓦耳文 |
| ky | 吉爾吉斯文 |
| la | 拉丁文 |
| lb | 盧森堡文 |
| lg | 干達文 |
| li | 林堡語 |
| lij | 利古里亞文 |
| lmo | 倫巴底語 |
| ln | 林格拉文 |
| lo | 寮文 |
| lt | 立陶宛文 |
| lu | 盧巴卡坦加文 |
| lua | 盧巴-盧拉文 |
| luo | 盧歐文 |
| lus | 米佐文 |
| lv | 拉脫維亞文 |
| 生氣 | 馬都拉文 |
| mai | 邁蒂利文 |
| mak | Makasar |
| mam | Mam |
| mfe | 模里西斯文 |
| mg | 馬達加斯加文 |
| mh | 馬紹爾文 |
| 分鐘 | 米南佳保文 |
| mk | 馬其頓文 |
| ml | 馬拉雅拉姆文 |
| mn | 蒙古文 |
| mr | 馬拉地文 |
| 毫秒 | 馬來文 |
| mt | 馬耳他文 |
| mwr | 馬瓦麗文 |
| my | 緬甸文 |
| na | 諾魯 |
| nb | 挪威波克默爾文 |
| nd | 北恩德貝萊文 |
| ndc | 尼道文 |
| ne | 尼泊爾文 |
| 新推出 | 尼瓦爾文 |
| ng | 恩東佳文 |
| nhe | 東瓦斯特克納瓦特爾文 |
| nl | 荷蘭文 |
| nn | 挪威文 (耐諾斯克) |
| nr | 南恩德貝勒文 |
| nso | Pedi |
| nus | 努爾語 |
| nv | 納瓦伙文 |
| ny | 齊切瓦語 |
| oc | 奧克語 |
| oj | 歐及布威文 |
| om | 奧羅莫文 |
| 或 | 奧里雅語 |
| os | 奧塞提文 |
| pa | 旁遮普文 |
| pag | 邦阿西楠語 |
| pam | 邦板牙 |
| pap | 帕皮阿門多語 |
| pl | 波蘭文 |
| ps | 普什圖文 |
| pt | 葡萄牙文 |
| qu | 克丘亞文 |
| rm | 羅曼斯文 |
| rn | 基隆迪語 |
| ro | 羅馬尼亞文 |
| ru | 俄文 |
| rw | 盧安達文 |
| sa | 梵文 |
| sah | 雅庫特文 |
| 週六 | 桑塔利文 |
| sc | 薩丁尼亞文 |
| scn | 西西里語 |
| sd | 信德文 |
| se | 北薩米文 |
| sg | 桑戈語 |
| shn | 撣語 |
| si | 錫蘭文 |
| sk | 斯洛伐克文 |
| sl | 斯洛維尼亞文 |
| sm | 薩摩亞文 |
| sn | 修納文 |
| so | 索馬利文 |
| sq | 阿爾巴尼亞文 |
| sr | 塞爾維亞文 |
| ss | 史瓦濟語 |
| st | 塞索托文 |
| su | 巽他文 |
| sv | 瑞典文 |
| sw | 斯瓦希里文 |
| szl | 西里西亞語 |
| ta | 泰米爾文 |
| tcy | 圖魯文 |
| te | 泰盧固文 |
| tet | 德頓語 |
| tg | 塔吉克文 |
| th | 泰文 |
| ti | 蒂格里亞文 |
| tiv | 蒂夫文 |
| tk | 土庫曼文 |
| tl | 塔加路文 |
| tn | 札那語 |
| 至 | 東加 |
| tpi | 巴布亞皮欽文 |
| tr | 土耳其文 |
| trp | 廓博羅克文 |
| ts | 宗卡文 |
| tt | 韃靼文 |
| tum | 圖姆布卡文 |
| tw | 契維語 |
| ty | 塔希提文 |
| tyv | 圖瓦文 |
| udm | 烏德穆爾特文 |
| ug | 維吾爾語 |
| uk | 烏克蘭文 |
| ur | 烏都文 |
| uz | 烏茲別克文 |
| ve | 溫達文 |
| vec | 威尼斯文 |
| vi | 越南文 |
| wa | 瓦隆文 |
| 戰爭 | 瓦瑞文 |
| wo | 沃洛夫文 |
| xh | 科薩文 |
| yi | 意第緒語 |
| yo | 約魯巴文 |
| yua | 猶加敦馬雅語 |
| yue | 粵語 |
| za | 壯文 |
| zh | 中文 |
| zu | 祖魯文 |
帳單
這項功能目前為實驗功能,因此使用語音對語音翻譯功能不會產生費用。
如要進一步瞭解定價和帳單,請參閱 Vertex AI 定價。