Fitur terjemahan speech-to-speech menggunakan AI untuk menafsirkan bahasa, sehingga memungkinkan percakapan antara individu dan sistem yang menggunakan bahasa yang berbeda. Aplikasi Anda dapat menggunakan fitur ini untuk memproses aliran audio yang berisi ucapan dalam satu bahasa dan menerjemahkannya ke dalam bahasa lain secara real time.
Tidak seperti fitur Live API lainnya yang mendukung percakapan berbasis giliran, terjemahan ucapan ke ucapan terus memproses input audio dan melakukan streaming output berikut saat tersedia:
- Transkripsi: Teks yang dikenali dari aliran audio input dalam bahasa asli.
- Terjemahan: Teks yang diterjemahkan dalam bahasa target.
- Audio yang disintesis: Aliran audio dari teks terjemahan yang diucapkan dalam bahasa target yang cocok dengan suara penutur asli.
Model yang didukung
Anda dapat menggunakan terjemahan speech-to-speech dengan model berikut:
| Versi model | Tingkat ketersediaan |
|---|---|
gemini-2.5-flash-s2st-exp-11-2025 |
Eksperimental pribadi |
Persyaratan audio input
Terjemahan ucapan ke ucapan hanya mendukung input audio. Untuk mengetahui informasi tentang format audio, codec, dan spesifikasi yang didukung seperti frekuensi sampel, lihat Format audio yang didukung.
Menggunakan terjemahan speech-to-speech
Untuk menggunakan terjemahan speech-to-speech, lihat contoh kode berikut:
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}")
Bahasa yang didukung
| Kode Bahasa | Bahasa |
|---|---|
| aa | Afar |
| ab | Abkhaz |
| ace | Aceh |
| ach | Acoli |
| af | Afrika |
| ak | Akan |
| alz | Alur |
| am | Amhara |
| an | Aragon |
| ar | Arab |
| sebagai | Assam |
| av | Avar |
| awa | Awadhi |
| ay | Aymara |
| az | Azerbaijani |
| ba | Bashkir |
| bal | Baluchi |
| larangan | Bali |
| bbc | Batak Toba |
| bci | Baoulé |
| be | Belarusia |
| bem | Bemba |
| ber | Berber |
| bew | Betawi |
| bg | Bulgaria |
| bgc | Haryanvi |
| bho | Bhojpuri |
| bi | Bislama |
| bm | Bambara |
| bn | Bengali |
| bo | Tibet |
| br | Breton |
| bs | Bosnia |
| bts | Batak Simalungun |
| btx | Batak Karo |
| ca | Catalan |
| ce | Suku Chechen |
| ceb | Cebuano |
| cgg | Chiga |
| ch | Chamorro |
| chk | Chuuk |
| cmn | China Mandarin |
| cnh | Hakha Chin |
| co | Korsika |
| cr | Cree |
| crh | Crimean Tatar |
| crs | Prancis Kreol Seselwa |
| cs | Ceko |
| cv | Chuvash |
| cy | Wales |
| da | Denmark |
| de | Jerman |
| din | Dinka |
| doi | Dogri |
| dov | Dombe |
| dv | Divehi |
| dyu | Dyula |
| dz | Dzongkha |
| ee | Ewe |
| el | Yunani |
| id | Inggris |
| eo | Esperanto |
| es | Spanyol |
| et | Estonia |
| eu | Basque |
| fa | Farsi |
| ff | Fulah |
| fi | Finlandia |
| fil | Filipina |
| fj | Fiji |
| fo | Faroese |
| fon | Fon |
| fr | Prancis |
| bulu | Friuli |
| fy | Frisia Barat |
| ga | Irlandia |
| gaa | Ga |
| gd | Gaelig |
| gl | Galisia |
| gn | Guarani |
| gu | Gujarati |
| gv | Manx |
| ha | Hausa |
| haw | Hawaii |
| he | Ibrani |
| hi | Hindi |
| hil | Hiligaynon |
| hmn | Hmong |
| ho | Hiri Motu |
| jam | Kroasia |
| hrx | Hunsrik |
| ht | Haiti, Kreol Haiti |
| hu | Hungaria |
| hy | Armenia |
| hz | Herero |
| iba | Iban |
| id | Indonesia |
| ig | Igbo |
| ilo | Iloko |
| adalah | Islandia |
| it | Italia |
| iu | Inuktitut |
| ja | Jepang |
| jam | Bahasa Inggris Kreol Jamaika |
| jv | Jawa |
| ka | Georgia |
| kac | Kachin |
| kek | Kekchi |
| kg | Kongo |
| kha | Khasi |
| ki | Kikuyu |
| kj | Kuanyama |
| kk | Kazak |
| kl | Greenland |
| km | Khmer Tengah |
| kn | Kannada |
| ko | Korea |
| kok | Konkani |
| kr | Kanuri |
| kri | Krio |
| ks | Kashmiri |
| ktu | Kituba |
| ku | Kurdi |
| kv | Komi |
| kw | Kernowek |
| ky | Kyrgyz |
| la | Latin |
| lb | Luksemburg |
| lg | Ganda |
| li | Limburgia |
| lij | Liguria |
| lmo | Lombard |
| ln | Lingala |
| lo | Laos |
| lt | Lituania |
| lu | Luba-Katanga |
| lua | Luba-Lulua |
| luo | Dholuo |
| lus | Mizo |
| lv | Latvia |
| marah | Madura |
| mai | Maithili |
| mak | Makasar |
| mam | Mam |
| mfe | Morisyen |
| mg | Malagasi |
| mh | Marshall |
| mnt | Minangkabau |
| mk | Makedonia |
| ml | Malayalam |
| mn | Mongolia |
| mr | Marathi |
| md | Melayu |
| mt | Malta |
| mwr | Marwari |
| my | Myanmar |
| tidak ada | Nauru |
| nb | Bokmål Norwegia |
| nd | Ndebele Utara |
| ndc | Ndau |
| ne | Nepal |
| baru | Newari |
| ng | Ndonga |
| nhe | Nahuatl Huasteca Timur |
| nl | Belanda |
| nn | Nynorsk Norwegia |
| nr | Ndebele Selatan |
| nso | Pedi |
| nus | Nuer |
| nv | Navajo |
| ny | Chichewa |
| oc | Occitan |
| oj | Ojibwa |
| om | Oromo |
| atau | Oriya |
| os | Ossetia |
| pa | Punjabi |
| pag | Pangasinan |
| pam | Pampanga |
| pap | Papiamento |
| pl | Polandia |
| ps | Pashto |
| pt | Portugis |
| qu | Quechua |
| rm | Romansh |
| rn | Rundi |
| ro | Rumania |
| ru | Rusia |
| rw | Kinyarwanda |
| sa | Sanskrit |
| sah | Yakut |
| sab | Santali |
| sc | Sardinia |
| scn | Sisilia |
| sd | Sindhi |
| se | Sami Utara |
| sg | Sango |
| shn | Shan |
| si | Sinhala |
| sk | Slovak |
| sl | Slovenia |
| sm | Samoa |
| sn | Shona |
| so | Somali |
| sq | Albania |
| sr | Serbia |
| ss | Swati |
| st | Sotho Selatan |
| su | Sunda |
| sv | Swedia |
| sw | Swahili |
| szl | Silesia |
| ta | Tamil |
| tcy | Tulu |
| te | Telugu |
| tet | Tetun |
| tg | Tajik |
| th | Thai |
| ti | Tigrinya |
| tiv | Tiv |
| tk | Turkmen |
| tl | Tagalog |
| tn | Tswana |
| sampai | Tonga |
| tpi | Tok Pisin |
| tr | Turki |
| trp | Kok Borok |
| ts | Tsonga |
| tt | Tatar |
| tum | Tumbuka |
| tw | Twi |
| ty | Tahiti |
| tyv | Tuva |
| udm | Udmurt |
| ug | Uighur |
| uk | Ukraina |
| ur | Urdu |
| uz | Uzbekistan |
| ve | Venda |
| vec | Venetian |
| vi | Vietnam |
| wa | Walloon |
| perang | Waray |
| wo | Wolof |
| xh | Xhosa |
| yi | Yiddish |
| yo | Yoruba |
| yua | Maya Yukatek |
| yue | Kanton |
| za | Zhuang |
| zh | China |
| zu | Zulu |
Penagihan
Sebagai fitur eksperimental, Anda tidak akan dikenai biaya untuk menggunakan terjemahan ucapan ke ucapan.
Untuk mengetahui informasi selengkapnya tentang harga dan penagihan, lihat Harga Vertex AI.