La función de traducción de voz a voz usa la IA para interpretar el lenguaje, lo que permite conversaciones entre personas y sistemas que hablan diferentes idiomas. Tu aplicación puede usar esta función para procesar un flujo de audio que contenga voz en un idioma y traducirlo a otro idioma en tiempo real.
A diferencia de otras funciones de la API de Live que admiten conversaciones por turnos, la traducción de voz a voz procesa continuamente la entrada de audio y transmite las siguientes salidas a medida que están disponibles:
- Transcripción: Es el texto reconocido del flujo de audio de entrada en el idioma original.
- Traducción: Es el texto traducido al idioma de destino.
- Audio sintetizado: Es una transmisión de audio del texto traducido que se habla en el idioma de destino y que coincide con la voz del orador original.
Modelos compatibles
Puedes usar la traducción de voz a voz con el siguiente modelo:
| Versión del modelo | Nivel de disponibilidad |
|---|---|
gemini-2.5-flash-s2st-exp-11-2025 |
Experimental privado |
Requisitos de audio de entrada
La traducción de voz a voz solo admite entrada de audio. Para obtener información sobre los formatos de audio, los códecs y las especificaciones compatibles, como la frecuencia de muestreo, consulta Formatos de audio compatibles.
Cómo usar la traducción de voz a voz
Para usar la traducción de voz a voz, consulta los siguientes ejemplos de código:
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}")
Idiomas compatibles
| Código de idioma | Idioma |
|---|---|
| aa | Afar |
| ab | Abjasio |
| ace | Achenés |
| ach | acholi |
| af | Afrikaans |
| ak | Akan |
| alz | Alur |
| a.m. | Amárico |
| una | Aragonés |
| ar | Árabe |
| as | Asamés |
| av | Avaric |
| awa | Awadhi |
| ay | Aimara |
| az | Azerí |
| ba | Baskir |
| bal | Baluchi |
| ban | Balinés |
| bbc | Toba |
| bci | Baoulé |
| be | Bielorruso |
| bem | Bemba |
| ber | Bereber |
| bew | Betawi |
| bg | Búlgaro |
| bgc | Haryanvi |
| bho | Bhojpuri |
| bi | Bislama |
| bm | Bambara |
| bn | Bengalí |
| bo | Tibetano |
| al | Bretón |
| bs | Bosnio |
| bts | Simalungun |
| btx | Karo |
| ac | Catalán |
| ce | Checheno |
| ceb | Cebuano |
| cgg | Chiga |
| ch | Chamorro |
| chk | Chuukés |
| cmn | Chino mandarín |
| cnh | Chin de Hakha |
| co | Corso |
| cr | Cree |
| crh | Tártaro de Crimea |
| crs | Criollo seychelense |
| cs | Checo |
| cv | Chuvasio |
| cy | Galés |
| da | Danés |
| de | Alemán |
| din | Dinka |
| doi | Dogri |
| dov | Ndombe |
| dv | Divehi |
| dyu | Diula |
| dz | Dzongkha |
| ee | Ewe |
| el | Griego |
| en | Inglés |
| eo | Esperanto |
| es | Español |
| et | Estonio |
| eu | Euskara |
| fa | Persa |
| ff | Fulah |
| fi | Finlandés |
| fil | Filipino |
| fj | Fiyiano |
| fo | Feroés |
| fon | Fon |
| fr | Francés |
| pelaje | Friulano |
| fy | Frisón occidental |
| dg | Irlandés |
| gaa | Ga |
| gd | Gaélico |
| gl | Gallego |
| gn | Guaraní |
| gu | Guyaratí |
| gv | Manés |
| ha | Hausa |
| haw | Hawaiano |
| he | Hebreo |
| hi | Hindi |
| hil | Hiligainón |
| hmn | Hmong |
| ho | Hiri Motu |
| h | Croata |
| hrx | Hunsrik |
| ht | Haitiano, criollo haitiano |
| hu | Húngaro |
| hy | Armenio |
| hz | Herero |
| iba | Iban |
| id | Indonesio |
| ig | Igbo |
| ilo | Ilocano |
| es | Islandés |
| it | Italiano |
| iu | Lenguas inuit |
| ja | Japonés |
| jam | Inglés criollo jamaiquino |
| jv | Javanés |
| ka | Georgiano |
| kac | Kachin |
| kek | Kekchí |
| kg | Congo |
| kha | Khasi |
| ki | Kikuyu |
| kj | Kuanyama |
| kk | Kazajo |
| kl | Groenlandés |
| km | Camboyano central |
| kn | Canarés |
| ko | Coreano |
| kok | Konkani |
| kr | Kanuri |
| kri | Krio |
| ks | Cachemir |
| ktu | Kituba |
| ku | Kurdo |
| kv | Komi |
| kw | Córnico |
| ky | Kirguizo |
| la | Latín |
| lb | Luxemburgués |
| lg | luganda |
| li | Limburgués |
| lij | Ligur |
| lmo | Lombardo |
| ln | Lingala |
| lo | Laosiano |
| lt | Lituano |
| lu | Luba-Katanga |
| lua | chiluba |
| luo | Dholuo |
| lus | Mizo |
| lv | Letón |
| mad | Madurés |
| mai | Maithili |
| mak | Makasar |
| mam | Mam |
| mfe | criollo mauriciano |
| mg | Malgache |
| mh | Marshallese |
| min | Minangkabau |
| mk | Macedonio |
| ml | Malayalam |
| mn | Mongol |
| mr | Maratí |
| ms | Malayo |
| mt | Maltés |
| mwr | Marwari |
| my | Birmano |
| na | Nauru |
| nb | bokmal noruego |
| nd | North Ndebele |
| ndc | Ndau |
| ne | Nepalí |
| nuevo | Newarí |
| ng | Ndonga |
| nhe | Náhuatl de la Huasteca oriental |
| nl | Holandés |
| nn | Noruego (Nynorsk) |
| nr | Ndebele del sur |
| nso | Pedi |
| nus | Nuer |
| nv | Navajo |
| ny | Chichewa |
| oc | Occitano |
| oj | Ojibwa |
| om | Oromo |
| o | Oriya |
| os | Osetio |
| pa | Punyabí |
| pag | Pangasinán |
| pam | Pampanga |
| pap | Papiamento |
| pl | Polaco |
| ps | Pastún |
| pt | Portugués |
| qu | Quechua |
| rm | Romanche |
| rn | Kirundi |
| ro | Rumano |
| ru | Ruso |
| rw | Kiñaruanda |
| sa | Sánscrito |
| sah | Yakut |
| se sentó | Santali |
| sc | Sardo |
| scn | Siciliano |
| sd | Sindhi |
| se | Sami del norte |
| sg | Sango |
| shn | Shan |
| si | Cingalés |
| sk | Eslovaco |
| sl | Esloveno |
| sm | Samoano |
| sn | Shona |
| so | Somalí |
| sq | Albanés |
| sr | Serbio |
| ss | Suazi |
| st | Sesoto meridional |
| su | Sundanés |
| sv | Sueco |
| sw | Suajili |
| szl | Silesio |
| ta | Tamil |
| tcy | Tulu |
| te | Telugu |
| tet | Tetun |
| tg | Tayiko |
| th | Tailandés |
| ti | Tigrinya |
| tiv | Tiv |
| TK | Turkmeno |
| tl | Tagalo |
| tn | Setsuana |
| a | Tonga |
| tpi | Tok pisin |
| tr | Turco |
| trp | Kokborok |
| ts | Tsonga |
| tt | Tártaro |
| tum | Tumbuka |
| tw | Twi |
| ty | Tahitiano |
| tyv | Tuvano |
| udm | Udmurto |
| µg | Uigur |
| uk | Ucraniano |
| ur | Urdu |
| uz | Uzbeko |
| ve | Venda |
| vec | Veneciano |
| vi | Vietnamita |
| wa | Valón |
| guerra | Samareño |
| wo | Wólof |
| xh | Xhosa |
| yi | Yiddish |
| yo | Yoruba |
| yua | Maya yucateco |
| yue | Cantonés |
| za | Chuang |
| zh | Chino |
| zu | Zulú |
Facturación
Como se trata de una función experimental, no se te cobrará por usar la traducción de voz a voz.
Para obtener más información sobre los precios y la facturación, consulta los precios de Vertex AI.