La función de traducción de voz a voz usa la IA para interpretar idiomas, lo que permite mantener conversaciones entre personas y sistemas que hablan idiomas diferentes. 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 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: el texto reconocido de la transmisión de audio de entrada en el idioma original.
- Traducción: el texto traducido al idioma de destino.
- Audio sintetizado: una secuencia de audio del texto traducido en el idioma de destino que coincide con la voz del orador original.
Modelos admitidos
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 privada |
Requisitos de audio de entrada
La traducción de voz a voz solo admite la entrada de audio. Para obtener información sobre los formatos de audio, los códecs y las especificaciones admitidos, como la frecuencia de muestreo, consulta Formatos de audio admitidos.
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 disponibles
| Código de idioma | Idioma |
|---|---|
| aa | Afar |
| ab | Abjaso |
| ace | Acehnés |
| ach | acholi |
| af | Afrikáans |
| ak | Acano |
| alz | Alur |
| a.m. | Amárico |
| an | Aragonés |
| ar | Árabe |
| como | Asamés |
| av | Avaric |
| awa | Awadhi |
| ay | Aimara |
| az | Azerí |
| ba | Baskir |
| bal | Baluchi |
| bloquear | Balinés |
| bbc | Batak toba |
| BCI | Baoulé |
| be | Bielorruso |
| bem | Bemba |
| ber | Bereber |
| bew | Betawi |
| bg | Búlgaro |
| bgc | Hariyanvi |
| bho | Bhoyapurí |
| bi | Bislama |
| bm | Bambara |
| bn | Bengalí |
| bo | Tibetano |
| br | Bretón |
| bs | Bosnio |
| bts | Batak Simalungun |
| btx | Batak Karo |
| ca | Catalán |
| ce | Checheno |
| ceb | Cebuano |
| cgg | Chiga |
| ch | Chamorro |
| chk | Trukés |
| cmn | Chino mandarín |
| cnh | Chin de Hakha |
| co | Corso |
| cr | Cree |
| crh | Tártaro de Crimea |
| crs | Criollo seychellense |
| cs | Checo |
| cv | Chuvasio |
| cy | Galés |
| da | Danés |
| de | Alemán |
| din | Dinka |
| doi | Dogri |
| dov | Dombe |
| dv | Divehi |
| dyu | Diula |
| dz | Dzongkha |
| ee | Ewé |
| el | Griego |
| es | Inglés |
| eo | Esperanto |
| es | Español |
| et | Estonio |
| eu | Euskera |
| fa | Farsi |
| ff | Fula |
| fi | Finés |
| fil | Filipino |
| fj | Fiyiano |
| fo | Feroés |
| fon | Fon |
| fr | Francés |
| pelo | Friulano |
| fy | Frisón occidental |
| ga | Irlandés |
| gaa | ga |
| gd | Gaélico |
| gl | Gallego |
| gn | Guaraní |
| gu | Guyaratí |
| gv | Gaélico manés |
| ha | Hausa |
| haw | Hawaiano |
| he | Hebreo |
| hola | 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 | Inuktitut |
| ja | Japonés |
| jam | Inglés criollo jamaicano |
| jv | Javanés |
| ka | Georgiano |
| kac | Kachin |
| kek | Quekchí |
| kg | Kikongo |
| kha | Khasi |
| ki | Kikuyu |
| kj | Kuanyama |
| kk | Kazajo |
| kl | Groenlandés |
| km | Jemer central |
| kn | Canarés |
| ko | Coreano |
| kok | Konkani |
| kr | Kanuri |
| kri | Krio |
| ks | Cachemir |
| ktu | Kituba |
| ku | Kurdo |
| kv | Komi |
| kw | Cornuallés |
| ky | Kirguís |
| la | Latín |
| lb | Luxemburgués |
| lg | luganda |
| li | Limburgués |
| lij | Ligur |
| lmo | Lombardo |
| ln | Lingala |
| lo | Lao |
| lt | Lituano |
| lu | Luba-katanga |
| lua | luba-lulua |
| luo | Dholuo |
| lus | Mizo |
| lv | Letón |
| enfadado | Madurés |
| mai | Maithili |
| mak | Makasar |
| mam | Mam |
| mfe | criollo mauriciano |
| mg | Malgache |
| mh | Marshalés |
| min | Minangkabau |
| mk | Macedonio |
| ml | Malabar |
| mn | Mongol |
| mr | Marathi |
| ms | Malayo |
| mt | Maltés |
| mwr | Marwari |
| my | Birmano |
| na | Nauru |
| nb | bokmal noruego |
| .º | Ndebele del norte |
| ndc | Ndau |
| ne | Nepalí |
| nuevo | Newarí |
| ng | Ndonga |
| nhe | Náhuatl de la Huasteca oriental |
| nl | neerlandé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 | Panyabí |
| 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 | Kinyarwanda |
| sa | Sánscrito |
| sah | Yakuto |
| sáb. | Santali |
| sc | Sardo |
| scn | Siciliano |
| sd | Sindhi |
| se | Sami septentrional |
| sg | Sango |
| shn | Shan |
| si | Cingalés |
| sk | Eslovaco |
| sl | Esloveno |
| sm | Samoano |
| sn | Shona |
| así que | Somalí |
| sq | Albanés |
| sr | Serbio |
| ss | Suazi |
| st | Sesoto austral |
| su | Sundanés |
| sv | Sueco |
| sw | Swahili |
| szl | Silesio |
| ta | Tamil |
| tcy | Tulu |
| te | Telugú |
| 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 | Tuviniano |
| udm | Udmurt |
| ug | Uiguro |
| uk | Ucraniano |
| ur | Urdu |
| uz | Uzbeko |
| ve | Venda |
| vec | Veneciano |
| vi | Vietnamita |
| wa | Valón |
| guerra | Samareño |
| wo | Wolof |
| xh | Xhosa |
| yi | Yiddish |
| yo | Yoruba |
| yua | Maya yucateco |
| yue | Cantonés |
| za | Zhuang |
| 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.