Übersetzung von Sprache zu Sprache verwenden

Die Funktion „Sprache-zu-Sprache-Übersetzung“ nutzt KI, um Sprache zu interpretieren und so Unterhaltungen zwischen Personen und Systemen zu ermöglichen, die unterschiedliche Sprachen sprechen. Ihre Anwendung kann diese Funktion verwenden, um einen Audiostream mit Sprache in einer Sprache zu verarbeiten und in Echtzeit in eine andere Sprache zu übersetzen.

Im Gegensatz zu anderen Live API-Funktionen, die auf abwechselnden Gesprächen basieren, verarbeitet die Sprach-zu-Sprach-Übersetzung Audioeingaben kontinuierlich und streamt die folgenden Ausgaben, sobald sie verfügbar sind:

  • Transkription:Der erkannte Text aus dem Audio-Eingabestream in der Originalsprache.
  • Übersetzung:Der übersetzte Text in der Zielsprache.
  • Synthetisiertes Audio:Ein Audiostream des übersetzten Texts, der in der Zielsprache gesprochen wird und der Stimme des ursprünglichen Sprechers entspricht.

Unterstützte Modelle

Sie können die Sprach-zu-Sprach-Übersetzung mit dem folgenden Modell verwenden:

Modellversion Verfügbarkeitsstufe
gemini-2.5-flash-s2st-exp-11-2025 Privat (Test)

Anforderungen an Eingabeaudio

Die Sprachübersetzung unterstützt nur Audioeingaben. Informationen zu unterstützten Audioformaten, Codecs und Spezifikationen wie der Abtastrate finden Sie unter Unterstützte Audioformate.

Sprachübersetzung verwenden

Wenn Sie die Sprach-zu-Sprach-Übersetzung verwenden möchten, sehen Sie sich die folgenden Codebeispiele an:

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}")

Unterstützte Sprachen

Sprachcode Sprache
aaAfar
abAbchasisch
aceAchinesisch
achAcoli
afAfrikaans
akAkan
alzAlur
vormittagsAmharisch
eineAragonesisch
arArabisch
asAssamesisch
avAwarisch
awaAwadhi
ayAymara
azAserbaidschanisch
baBaschkirisch
balBaluchi-Schaf
sperrenBalinesisch
bbcBatak Toba
bciBaoulé
beBelarussisch
bemBemba
berBerber
bewBetawi
bgBulgarisch
bgcHaryanvi
bhoBhojpuri
biBislama
bmBambara
bnBengalisch
boTibetisch
brBretonisch
bsBosnisch
btsBatak Simalungun
btxBatak Karo
ZertifizierungsstelleKatalanisch
ceTschetschenisch
cebCebuano
cggChiga
chChamorro
chkChuukesisch
cmnMandarin
cnhHakha Chin
coKorsisch
crCree
crhKrimtatarisch
crsSeychellenkreol
csTschechisch
cvTschuwaschisch
cyWalisisch
daDänisch
deDeutsch
dinDinka
doiDogri
dovDombe
dvDhivehi
dyuDioula
dzDzongkha
eeEwe
elGriechisch
deEnglisch
eoEsperanto
esSpanisch
etEstnisch
euBaskisch
faFarsi
ffFulfulde
fiFinnisch
filFilipino
fjFidschianisch
foFäröisch
fonFon
frFranzösisch
FellFurlanisch
fyWestfriesisch
gaIrisch
gaaGa
gdGälisch
glGalizisch
gnGuarani
guGujarati
gvManx
haHausa
hawHawaiisch
erHebräisch
hiHindi
hilHiligaynon
hmnHmong
hoHiri Motu
Std.Kroatisch
hrxHunsrückisch
htHaitianisch
huUngarisch
hyArmenisch
hzHerero
ibaIban
idIndonesisch
igIgbo
iloIlokano
istIsländisch
itItalienisch
iuInuktitut
jaJapanisch
JamJamaikanisches Kreol-Englisch
jvJavanisch
kaGeorgisch
kacKachin
kekKekchí
kgKongo
khaKhasi
kiKikuyu
kjKuanyama
kkKasachisch
klGrönländisch
kmZentral-Khmer
knKannada
koKoreanisch
kokKonkani
krKanuri
kriKrio
ksKashmiri
ktuKituba
kuKurdisch
kvKomi
kwCornish
kyKirgisisch
laLatein
lbLuxemburgisch
lgGanda
liLimburgisch
lijLigurisch
lmoLombardisch
lnLingala
loLao
ltLitauisch
luLuba-Katanga
luaTschiluba
luoDholuo
lusMizo
lvLettisch
madMaduresisch
maiMaithili
makMakasar
mamMam
mfeMorisyen
mgMalagasy
mhMarshallesisch
Min.Minangkabauisch
mkMazedonisch
mlMalayalam
mnMongolisch
mrMarathi
msMalaiisch
mtMaltesisch
mwrMarwari
myBurmesisch
naNauru
nbNorwegisch Bokmål
ndNord-Ndebele
ndcNdau
neNepalesisch
neuNewari
ngNdonga
nheEastern Huasteca Nahuatl
nlNiederländisch
nnNorwegisch (Nynorsk)
nrSüd-Ndebele
nsoPedi
nusNuer
nvNavajo
nyChichewa
ocOkzitanisch
ojOjibwa
omOromo
oderOriya
osOssetisch
paPunjabi
pagPangasinensisch
pamPampanga
papPapiamento
plPolnisch
psPaschtu
ptPortugiesisch
quQuechua
rmRätoromanisch
rnKirundi
roRumänisch
ruRussisch
rwKinyarwanda
saSanskrit
sahJakutisch
Sa.Santali
scSardisch
scnSizilianisch
sdSindhi
seNordsamisch
sgSango
shnShan
siSinghalesisch
skSlowakisch
slSlowenisch
smSamoanisch
snShona
soSomali
sqAlbanisch
srSerbisch
ssSiswati
stSüd-Sotho
suSundanesisch
svSchwedisch
swSuaheli
szlSchlesisch
taTamil
tcyTulu
teTelugu
tetTetum
tgTadschikisch
thThailändisch
tiTigrinya
tivTiv
tkTurkmenisch
tlTagalog
tnSetswana
bisTonga
tpiTok Pisin
trTürkisch
trpKokborok
tsTsonga
ttTatarisch
tumTumbuka
twTwi
tyTahitianisch
tyvTuwinisch
udmUdmurtisch
ugUighur
ukUkrainisch
urUrdu
uzUsbekisch
veVenda
vecVenetisch
viVietnamesisch
waWallonisch
KriegWáray-Wáray
woWolof
xhXhosa
yiJiddisch
yoYoruba
yuaMayathan
yueKantonesisch
zaZhuang
zhChinesisch
zuZulu

Abrechnung

Da es sich um eine experimentelle Funktion handelt, wird Ihnen die Sprach-zu-Sprach-Übersetzung nicht in Rechnung gestellt.

Weitere Informationen zu Preisen und Abrechnung finden Sie unter Vertex AI-Preise.