A gyors átírási API használata Azure Speech használatával az Foundry Toolsban

A gyors átírási API a valós idejűnél szinkron módon és gyorsabban visszaadott eredményekkel rendelkező hangfájlok átírására szolgál. Használjon gyors átírást olyan helyzetekben, amikor a lehető leggyorsabban szüksége van egy hangrögzítés átiratára kiszámítható késéssel, például:

  • Gyors hang- vagy videoátirat, feliratok és szerkesztés.
  • Értekezleti jegyzetek
  • Voicemail

A kötegelt átíró API-val ellentétben a gyors átíró API csak megjelenítési (nem lexikális) formában készít átírásokat. A megjelenítési űrlap az átírás ember által olvashatóbb formája, amely magában foglalja az írásjeleket és a nagybetűs megjelenítést.

Tipp

Használhatja a legújabb LLM-alapú beszédátírást és beszédfordítást is az LLM-beszéd használatával.

Szolgáltatás rendelkezésre állása

Ez a táblázat a gyors átírási API által támogatott átírási funkciókat mutatja be LLM Speech használatával és nélküle, valamint a MAI-Transcribe-2 használatával:

A MAI-Transcribe-2 oszlopban csak a MAI-Transcribe-2 képességek láthatók. A támogatott modellverziókat és a modellspecifikus konfigurációs beállításokat a Azure SpeechMAI-Transcribe című témakörben talál.

Funkció Gyors átírás (alapértelmezett) LLM Speech (bővített) MAI-Transcribe-2
Átírás ✅ (beszédátírási modellek) ✅ (multimodális modell) ✅ (beszédből szöveggé alakító modell)
Fordítás ❌ ✅ (multimodális modell) ❌
Diarizáció ✅ ✅ ✅
Csatorna (sztereó) ✅ ✅ ❌
Trágárság szűrése ✅ ✅ ✅
Területi beállítás megadása ✅ ✅ ✅
Egyéni utasítás ❌ ✅ ❌
Kifejezéslista ✅ ✅ ✅
Szegmensszintű időbélyegek ✅ ✅ ✅
Word szintű időbélyegek ✅ ✅ ✅

Tipp

A jelölt területi beállítások kiválasztásával, a többnyelvű modell használatával, a diarizálás engedélyezésével, valamint a válaszban szereplő locale és speaker ellenőrzésével kapcsolatos útmutatásért lásd: A beszédátírás nyelvazonosításának és diarizálásának konfigurálása.

A Microsoft Foundry gyors átírását kód írása nélkül is kipróbálhatja.

Előfeltételek

Gyors átírás kipróbálása

  1. Lépjen a Beszéd szöveggé funkció oldalára , és válassza a Megnyitás a játszótéren lehetőséget.
  2. A felső legördülő menüben válassza a Gyors átírás lehetőséget.
  3. Ha szeretné, a Paraméterek szakasz használatával módosíthatja a nyelvet, a profanitási szabályzatot és más beállításokat.
  4. Válassza ki a hangfájlt a Fájlok feltöltése szakaszban. Ezután válassza a Start lehetőséget.
  5. Az átirat kimenetének megtekintése az Átirat lapon. Igény szerint megtekintheti a nyers API-válasz kimenetét a JSON lapon.
  6. Váltson a Kód fülre, és kérje le a gyors átíráshoz szükséges mintakódot az alkalmazásban.

Előfeltételek

  • Egy Azure Speech-erőforrás azon régiók egyikében, ahol a gyors átírási API elérhető. A támogatott régiók aktuális listájáért tekintse meg a Speech szolgáltatás régiói táblát.

  • Hangfájl (5 óránál rövidebb és 500 MB-nál kisebb méretű) a kötegelt átírási API által támogatott formátumokban és kodekekben: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW a WAV-tárolóban, MULAW a WAV-tárolóban, AMR, WebM és SPEEX. A támogatott hangformátumokkal kapcsolatos további információkért lásd a támogatott hangformátumokat.

Hang feltöltése

A gyors átíráshoz a következő módokon adhat meg hangadatokat:

  • Beágyazott hangfeltöltés
--form 'audio=@"YourAudioFile"'
  • Hang nyilvános URL-címről
--form 'definition="{"audioUrl": "https://crbn.us/hello.wav"}"'

Tipp

Hosszú hangfájlok esetén ajánlott nyilvános URL-címről feltölteni.

Az alábbi szakaszokban példaként beágyazott hangfeltöltést használunk.

A gyors átírási API használata

Tipp

Próbálja ki a gyors átírást a Microsoft Foundry portálon.

Megtanuljuk, hogyan használjuk a gyors átírási API-t ( Transcriptions - Transcribe) az alábbi forgatókönyvekkel:

  • Ismert területi beállítás megadva: Hangfájl átírása megadott területi beállítással. Ha ismeri a hangfájl területi beállítását, megadhatja az átírás pontosságának javítása és a késés minimalizálása érdekében.
  • Nyelvazonosítás bekapcsolva: Hangfájl átírása nyelvazonosítással. Ha nem biztos a hangfájl területi beállításában, bekapcsolhatja a nyelvi azonosítást, hogy a Speech szolgáltatás azonosíthassa a területi beállításokat (hangonként egy területi beállítás).
  • Többnyelvű átírás: Hangfájl átírása a legújabb többnyelvű beszédátírási modellel. Ha a hang többnyelvű tartalmakat tartalmaz, amelyeket folyamatosan és pontosan szeretne átírni, használhatja a legújabb többnyelvű beszédátírási modellt a területi kódok megadása nélkül.
  • Diarizálás bekapcsolva: Hangfájl átalakítása bekapcsolt diarizálással. A diarizálás különbséget tesz a beszélgetés különböző előadói között. A Speech szolgáltatás információt nyújt arról, hogy melyik beszélő beszélt az átírt beszéd egy bizonyos részén.
  • Többcsatornás üzemmód: Átírhatunk egy vagy két csatornás hangfájlt. A többcsatornás átiratok több csatornás hangfájlok esetén hasznosak, például több hangszóróval rendelkező hangfájlokhoz vagy háttérzajjal rendelkező hangfájlokhoz. A gyors átírási API alapértelmezés szerint egyetlen csatornába egyesíti az összes bemeneti csatornát, majd végrehajtja az átírást. Ha ez nem kívánatos, a csatornák egyesítés nélkül egymástól függetlenül is átírhatók.

Hajtsa végre a multipart/form-data POST kérést a transcriptions végpont felé a hangfájl és a kérés törzs tulajdonságaival.

Az alábbi példa bemutatja, hogyan lehet átírni egy hangfájlt egy megadott területi beállítással. Ha ismeri a hangfájl területi beállítását, megadhatja az átírás pontosságának javítása és a késés minimalizálása érdekében.

  • Cserélje le YourSpeechResourceKey az ön Speech erőforráskulcsával.
  • Cserélje le a(z) YourResourceName elemet a Speech-erőforrás nevére.
  • Cserélje le a YourAudioFile útvonalat a hangfájléra.

Fontos

Az ajánlott kulcs nélküli hitelesítéshez a Microsoft Entra ID-vel cserélje le a következőt: --header 'Ocp-Apim-Subscription-Key: YourSpeechResourceKey' a --header "Authorization: Bearer YourAccessToken"-re. A kulcs nélküli hitelesítésről további információt a szerepköralapú hozzáférés-vezérlés útmutatójában talál.

curl --location 'https://YourResourceName.cognitiveservices.azure.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: YourSpeechResourceKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

Hozza létre az űrlapdefiníciót az alábbi utasítások szerint:

  • Állítsa be az opcionális (de ajánlott) locales tulajdonságot, amely megfelel a hangadatoknak az átíráshoz várt területi beállításának. Ebben a példában a területi beállítás en-US. A támogatott területi beállításokkal kapcsolatos további információkért lásd a szövegfelismerés támogatott nyelvei.

A gyors átírási API-val kapcsolatos locales további információkért és egyéb tulajdonságokért tekintse meg az útmutató későbbi, kéréskonfigurációs beállítások szakaszát.

A válasz tartalmaz durationMilliseconds, offsetMillisecondsés így tovább. A combinedPhrases tulajdonság az összes előadó teljes átiratát tartalmazza.

{
    "durationMilliseconds": 182439,
    "combinedPhrases": [
        {
            "text": "Good afternoon. This is Sam. Thank you for calling Contoso. How can I help? Hi there. My name is Mary. I'm currently living in Los Angeles, but I'm planning to move to Las Vegas. I would like to apply for a loan. Okay. I see you're currently living in California. Let me make sure I understand you correctly. Uh You'd like to apply for a loan even though you'll be moving soon. Is that right? Yes, exactly. So I'm planning to relocate soon, but I would like to apply for the loan first so that I can purchase a new home once I move there. And are you planning to sell your current home? Yes, I will be listing it on the market soon and hopefully it'll sell quickly. That's why I'm applying for a loan now, so that I can purchase a new house in Nevada and close on it quickly as well once my current home sells. I see. Would you mind holding for a moment while I take your information down? Yeah, no problem. Thank you for your help. Mm-hmm. Just one moment. All right. Thank you for your patience, ma'am. May I have your first and last name, please? Yes, my name is Mary Smith. Thank you, Ms. Smith. May I have your current address, please? Yes. So my address is 123 Main Street in Los Angeles, California, and the zip code is 90923. Sorry, that was a 90 what? 90923. 90923 on Main Street. Got it. Thank you. May I have your phone number as well, please? Uh Yes, my phone number is 504-529-2351 and then yeah. 2351. Got it. And do you have an e-mail address we I can associate with this application? uh Yes, so my e-mail address is mary.a.sm78@gmail.com. Mary.a, was that a S-N as in November or M as in Mike? M as in Mike. Mike78, got it. Thank you. Ms. Smith, do you currently have any other loans? Uh Yes, so I currently have two other loans through Contoso. So my first one is my car loan and then my other is my student loan. They total about 1400 per month combined and my interest rate is 8%. I see. And you're currently paying those loans off monthly, is that right? Yes, of course I do. OK, thank you. Here's what I suggest we do. Let me place you on a brief hold again so that I can talk with one of our loan officers and get this started for you immediately. In the meantime, it would be great if you could take a few minutes and complete the remainder of the secure application online at www.contosoloans.com. Yeah, that sounds good. I can go ahead and get started. Thank you for your help. Thank you."
        }
    ],
    "phrases": [
        {
            "offsetMilliseconds": 960,
            "durationMilliseconds": 640,
            "text": "Good afternoon.",
            "words": [
                {
                    "text": "Good",
                    "offsetMilliseconds": 960,
                    "durationMilliseconds": 240
                },
                {
                    "text": "afternoon.",
                    "offsetMilliseconds": 1200,
                    "durationMilliseconds": 400
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        {
            "offsetMilliseconds": 1600,
            "durationMilliseconds": 640,
            "text": "This is Sam.",
            "words": [
                {
                    "text": "This",
                    "offsetMilliseconds": 1600,
                    "durationMilliseconds": 240
                },
                {
                    "text": "is",
                    "offsetMilliseconds": 1840,
                    "durationMilliseconds": 120
                },
                {
                    "text": "Sam.",
                    "offsetMilliseconds": 1960,
                    "durationMilliseconds": 280
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        {
            "offsetMilliseconds": 2240,
            "durationMilliseconds": 1040,
            "text": "Thank you for calling Contoso.",
            "words": [
                {
                    "text": "Thank",
                    "offsetMilliseconds": 2240,
                    "durationMilliseconds": 200
                },
                {
                    "text": "you",
                    "offsetMilliseconds": 2440,
                    "durationMilliseconds": 80
                },
                {
                    "text": "for",
                    "offsetMilliseconds": 2520,
                    "durationMilliseconds": 120
                },
                {
                    "text": "calling",
                    "offsetMilliseconds": 2640,
                    "durationMilliseconds": 200
                },
                {
                    "text": "Contoso.",
                    "offsetMilliseconds": 2840,
                    "durationMilliseconds": 440
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        {
            "offsetMilliseconds": 3280,
            "durationMilliseconds": 640,
            "text": "How can I help?",
            "words": [
                {
                    "text": "How",
                    "offsetMilliseconds": 3280,
                    "durationMilliseconds": 120
                },
                {
                    "text": "can",
                    "offsetMilliseconds": 3440,
                    "durationMilliseconds": 120
                },
                {
                    "text": "I",
                    "offsetMilliseconds": 3560,
                    "durationMilliseconds": 40
                },
                {
                    "text": "help?",
                    "offsetMilliseconds": 3600,
                    "durationMilliseconds": 320
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        {
            "offsetMilliseconds": 5040,
            "durationMilliseconds": 400,
            "text": "Hi there.",
            "words": [
                {
                    "text": "Hi",
                    "offsetMilliseconds": 5040,
                    "durationMilliseconds": 240
                },
                {
                    "text": "there.",
                    "offsetMilliseconds": 5280,
                    "durationMilliseconds": 160
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        {
            "offsetMilliseconds": 5440,
            "durationMilliseconds": 800,
            "text": "My name is Mary.",
            "words": [
                {
                    "text": "My",
                    "offsetMilliseconds": 5440,
                    "durationMilliseconds": 80
                },
                {
                    "text": "name",
                    "offsetMilliseconds": 5520,
                    "durationMilliseconds": 120
                },
                {
                    "text": "is",
                    "offsetMilliseconds": 5640,
                    "durationMilliseconds": 80
                },
                {
                    "text": "Mary.",
                    "offsetMilliseconds": 5720,
                    "durationMilliseconds": 520
                }
            ],
            "locale": "en-US",
            "confidence": 0.93554276
        },
        // More transcription results...
        // Redacted for brevity
        {
            "offsetMilliseconds": 180320,
            "durationMilliseconds": 680,
            "text": "Thank you for your help.",
            "words": [
                {
                    "text": "Thank",
                    "offsetMilliseconds": 180320,
                    "durationMilliseconds": 160
                },
                {
                    "text": "you",
                    "offsetMilliseconds": 180480,
                    "durationMilliseconds": 80
                },
                {
                    "text": "for",
                    "offsetMilliseconds": 180560,
                    "durationMilliseconds": 120
                },
                {
                    "text": "your",
                    "offsetMilliseconds": 180680,
                    "durationMilliseconds": 120
                },
                {
                    "text": "help.",
                    "offsetMilliseconds": 180800,
                    "durationMilliseconds": 200
                }
            ],
            "locale": "en-US",
            "confidence": 0.92022026
        },
        {
            "offsetMilliseconds": 181960,
            "durationMilliseconds": 280,
            "text": "Thank you.",
            "words": [
                {
                    "text": "Thank",
                    "offsetMilliseconds": 181960,
                    "durationMilliseconds": 200
                },
                {
                    "text": "you.",
                    "offsetMilliseconds": 182160,
                    "durationMilliseconds": 80
                }
            ],
            "locale": "en-US",
            "confidence": 0.92022026
        }
    ]
}

Megjegyzés

A Beszédszolgáltatás egy rugalmas szolgáltatás. Ha 429-es hibakódot (túl sok kérést) kap, kövesse az ajánlott eljárásokat az automatikus skálázás során történő szabályozás csökkentéséhez.

Konfigurációs beállítások kérése

Az alábbiakban néhány tulajdonságbeállítást talál az átírás konfigurálására, amikor meghívja az Átírás – Átírás műveletet.

Tulajdonság Leírás Kötelező vagy nem kötelező
channels A külön átírandó csatornák nullaalapú indexeinek listája. Legfeljebb két csatorna támogatott, hacsak nincs engedélyezve a diarizálás. A gyors átírási API alapértelmezés szerint egyetlen csatornába egyesíti az összes bemeneti csatornát, majd végrehajtja az átírást. Ha ez nem kívánatos, a csatornák egyesítés nélkül egymástól függetlenül is átírhatók.

Ha külön szeretné átírni a csatornákat egy sztereó hangfájlból, meg kell adnia [0,1], [0]vagy [1]. Ellenkező esetben a sztereó hang mono-ra van egyesítve, és csak egyetlen csatorna lesz átírva.

Ha a hang sztereó, és a diarizálás engedélyezve van, akkor nem állíthatja be a channels tulajdonságot [0,1]. A Speech szolgáltatás nem támogatja több csatorna diarizálását.

Mono hang esetén a channels tulajdonság figyelmen kívül lesz hagyva, és a hang mindig egyetlen csatornaként lesz átírva.
Választható
diarization A diarizáció konfigurációja. A diarizálás több hangszóró felismerésének és elkülönítésének folyamata egy hangcsatornában. Adja meg például a "diarization": {"maxSpeakers": 2, "enabled": true}. Ezután az átírási fájl minden átírt kifejezéshez tartalmaz speaker bejegyzéseket (például "speaker": 0 vagy "speaker": 1) . Választható
locales Azoknak a területi beállításoknak a listája, amelyeknek meg kell egyeznie az átírandó hangadatok várható területi beállításával.

Ha ismeri a hangfájl területi beállítását, megadhatja az átírás pontosságának javítása és a késés minimalizálása érdekében. Ha egyetlen területi beállítás van megadva, a rendszer ezt a területi beállítást használja az átíráshoz.

Ha azonban nem biztos a területi beállításban, több területi beállítás is megadható a nyelvazonosítás használatához. A nyelvazonosítás pontosabb lehet a jelölt területi beállítások pontosabb listájával.

Ha nem ad meg területi beállításokat, akkor a Speech szolgáltatás a legújabb többnyelvű modellt fogja használni a területi beállítás azonosításához és a folyamatos átíráshoz.

A legújabb támogatott nyelveket az Átiratok – Támogatott területi beállítások listázása REST API-val (API 2024-11-15-ös vagy újabb verzió) szerezheti be. A területi beállításokkal kapcsolatos további információkért tekintse meg a Speech service nyelvi támogatási dokumentációját.
Nem kötelező, de ajánlott, ha ismeri a várt területi beállításokat.
phraseList A kifejezéslista azoknak a szavaknak vagy kifejezéseknek a listája, amelyek előre meg lesznek adva a felismerésük javítása érdekében. Ha egy kifejezést hozzáad egy kifejezéslistához, az növeli annak fontosságát, így nagyobb valószínűséggel lesz felismerve. Adja meg például a phraseList":{"phrases":["Contoso","Jessie","Rehaan"]}. A kifejezéslista az API 2025-10-15-ös verziójával támogatott. További információ: A felismerési pontosság javítása kifejezéslistával. Választható
profanityFilterMode Meghatározza, hogyan kezelheti a profanitást a felismerési eredményekben. Az elfogadott értékek a None trágárság szűrésének letiltása, Masked a trágárság csillagokkal való helyettesítése, Removed az összes trágárság eltávolítása az eredményből, vagy Tags trágár címkék hozzáadása. Az alapértelmezett érték .Masked Választható

Referencia dokumentáció | Csomag (PyPi) | GitHub példák

Előfeltételek

Microsoft Entra ID előfeltételek

A Microsoft Entra ID javasolt kulcs nélküli hitelesítéséhez a következőket kell elvégeznie:

  • Telepítse az Azure CLI-t, amelyet a Microsoft Entra ID kulcs nélküli hitelesítéshez használnak.
  • Rendelje hozzá a szerepkört Cognitive Services User a felhasználói fiókjához. Szerepköröket a Azure portálon a Access control (IAM)>A szerepkör-hozzárendelés hozzáadása területen rendelhet hozzá.

Beállítás

  1. Hozzon létre egy új nevű transcription-quickstart mappát, és lépjen a gyorsindítási mappára a következő paranccsal:

    mkdir transcription-quickstart && cd transcription-quickstart
    
  2. Hozzon létre és aktiváljon egy virtuális Python környezetet az oktatóanyaghoz szükséges csomagok telepítéséhez. Javasoljuk, hogy mindig használjon virtuális vagy conda környezetet Python csomagok telepítésekor. Ellenkező esetben megszakíthatja a Python globális telepítését. Ha már telepítette a Python 3.9-et vagy újabb verziót, hozzon létre egy virtuális környezetet az alábbi parancsokkal:

    py -3 -m venv .venv
    .venv\Scripts\Activate.ps1
    

    A Python környezet aktiválásakor a parancssorból futó python vagy pip az alkalmazás .venv mappájában található Python értelmezőt használja. A Python virtuális környezetből a deactivate paranccsal léphet ki. Később szükség esetén újraaktiválhatja.

  3. Hozzon létre egy requirements.txtnevű fájlt. Adja hozzá a következő csomagokat a fájlhoz:

    azure-ai-transcription
    azure-identity
    
  4. Telepítse a csomagokat:

    pip install -r requirements.txt
    

Erőforrásadatok lekérése

Le kell hívnia az erőforrás-végpontot és az API-kulcsot a hitelesítéshez.

  1. Jelentkezzen be az Foundry portálra.

  2. Válassza a Felügyeleti központ lehetőséget a bal oldali menüből. A Csatlakoztatott erőforrások területen válassza ki a Speech vagy a többszolgáltatásos erőforrást.

  3. Válassza a Kulcsok és végpont lehetőséget.

  4. Másolja ki a végpont és a kulcs értékeit. Ezekkel az értékekkel állíthat be környezeti változókat.

  5. Állítsa be a következő környezeti változókat:

    $env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
    $env:AZURE_SPEECH_API_KEY="<your-api-key>"
    

Megjegyzés

Microsoft Entra ID hitelesítéshez (éles környezetben ajánlott) telepítse a azure-identity és konfigurálja a hitelesítést az Microsoft Entra ID előfeltételek szakaszban leírtak szerint.

Kód

  1. Hozzon létre egy fájlt transcribe_audio_file.py a következő kóddal:

    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.transcription import TranscriptionClient
    from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions
    
    # Get configuration from environment variables
    endpoint = os.environ["AZURE_SPEECH_ENDPOINT"]
    api_key = os.environ["AZURE_SPEECH_API_KEY"]
    
    # Create the transcription client
    client = TranscriptionClient(endpoint=endpoint, credential=AzureKeyCredential(api_key))
    
    # Path to your audio file (replace with your own file path)
    audio_file_path = "<path-to-your-audio-file.wav>"
    
    # Open and read the audio file
    with open(audio_file_path, "rb") as audio_file:
        # Create transcription options
        options = TranscriptionOptions(locales=["en-US"])  # Specify the language
    
        # Create the request content
        request_content = TranscriptionContent(definition=options, audio=audio_file)
    
        # Transcribe the audio
        result = client.transcribe(request_content)
    
        # Print the transcription result
        print(f"Transcription: {result.combined_phrases[0].text}")
    
        # Print detailed phrase information
        if result.phrases:
            print("\nDetailed phrases:")
            for phrase in result.phrases:
                print(
                    f"  [{phrase.offset_milliseconds}ms - "
                    f"{phrase.offset_milliseconds + phrase.duration_milliseconds}ms]: "
                    f"{phrase.text}"
                )
    

    Referencia: TranscriptionClient | TranscriptionContent | TranscriptionOptions | AzureKeyCredential

  2. Cserélje le a <path-to-your-audio-file.wav> útvonalat a hangfájléra. A szolgáltatás támogatja a WAV, MP3, FLAC, OGG és egyéb gyakori hangformátumokat.

  3. Futtassa a Python szkriptet:

    python transcribe_audio_file.py
    

Kimenet

A szkript az átirat eredményét a konzolra nyomtatja:

Transcription: Hi there! This is a sample voice recording created for speech synthesis testing. The quick brown fox jumps over the lazy dog. Just a fun way to include every letter of the alphabet. Numbers, like 1, 2, 3, are spoken clearly. Let's see how well this voice captures tone, timing, and natural rhythm. This audio is provided by samplefiles.com.

Detailed phrases:
  [40ms - 4880ms]: Hi there! This is a sample voice recording created for speech synthesis testing.
  [5440ms - 8400ms]: The quick brown fox jumps over the lazy dog.
  [9040ms - 12240ms]: Just a fun way to include every letter of the alphabet.
  [12720ms - 16720ms]: Numbers, like 1, 2, 3, are spoken clearly.
  [17200ms - 22000ms]: Let's see how well this voice captures tone, timing, and natural rhythm.
  [22480ms - 25920ms]: This audio is provided by samplefiles.com.

Konfigurációs beállítások kérése

Az átírási viselkedés testreszabására használható TranscriptionOptions . A következő szakaszok ismertetik az egyes támogatott konfigurációkat, és bemutatják annak alkalmazását.

Többnyelvű észlelés

Több területi jelölt átadása a nyelvek közötti nyelvazonosítás engedélyezéséhez locales . A szolgáltatás észleli a beszélt nyelvet, és az észlelt területi beállítással címkéz minden egyes kifejezést. Hagyja ki locales teljesen, hogy a szolgáltatás automatikusan észlelje az összes nyelvet jelöltlista nélkül.

from azure.core.credentials import AzureKeyCredential
from azure.ai.transcription import TranscriptionClient
from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions

client = TranscriptionClient(
    endpoint=endpoint, credential=AzureKeyCredential(api_key)
)

with open(audio_file_path, "rb") as audio_file:
    # Provide candidate locales — the service selects the best match per phrase
    options = TranscriptionOptions(locales=["en-US", "es-ES", "fr-FR", "de-DE"])
    result = client.transcribe(TranscriptionContent(definition=options, audio=audio_file))

    for phrase in result.phrases:
        locale = phrase.locale if phrase.locale else "detected"
        print(f"[{locale}] {phrase.text}")

Hivatkozás: TranscriptionOptions

Beszélőazonosítás

A diarizálás egyetlen hangcsatornában észleli és címkézi a különböző hangszórókat. Hozzon létre egy TranscriptionDiarizationOptions objektumot a maximálisan várt számú hangszóróval (2–35), és adja át a következőnek TranscriptionOptions: . Az eredményben szereplő összes kifejezés tartalmaz egy azonosítót speaker .

from azure.core.credentials import AzureKeyCredential
from azure.ai.transcription import TranscriptionClient
from azure.ai.transcription.models import (
    TranscriptionContent,
    TranscriptionOptions,
    TranscriptionDiarizationOptions,
)

client = TranscriptionClient(
    endpoint=endpoint, credential=AzureKeyCredential(api_key)
)

with open(audio_file_path, "rb") as audio_file:
    diarization_options = TranscriptionDiarizationOptions(
        max_speakers=5  # Hint for maximum number of speakers (2-35)
    )
    options = TranscriptionOptions(
        locales=["en-US"], diarization_options=diarization_options
    )
    result = client.transcribe(TranscriptionContent(definition=options, audio=audio_file))

    for phrase in result.phrases:
        speaker = phrase.speaker if phrase.speaker is not None else "Unknown"
        print(f"Speaker {speaker} [{phrase.offset_milliseconds}ms]: {phrase.text}")

Megjegyzés

A diarizálás csak egycsatornás (mono) hangon támogatott. Ha a hang sztereó, ne állítsa be a channels tulajdonságot [0, 1]-ra, amikor a diarizálás engedélyezve van.

Hivatkozás: TranscriptionDiarizationOptions, TranscriptionOptions

Kifejezéslista

A kifejezéslista növeli a tartományspecifikus kifejezések, a megfelelő főnevek és a nem gyakori szavak felismerésének pontosságát. Állítsa be a biasing_weight-t a 0.0 és 2.0 között annak érdekében, hogy szabályozza, a kifejezések mennyire vannak előnyben részesítve (a magasabb értékek növelik az elfogultságot).

from azure.core.credentials import AzureKeyCredential
from azure.ai.transcription import TranscriptionClient
from azure.ai.transcription.models import (
    TranscriptionContent,
    TranscriptionOptions,
    PhraseListProperties,
)

client = TranscriptionClient(
    endpoint=endpoint, credential=AzureKeyCredential(api_key)
)

with open(audio_file_path, "rb") as audio_file:
    phrase_list = PhraseListProperties(
        phrases=["Contoso", "Jessie", "Rehaan"],
        biasing_weight=1.5,  # Weight between 0.0 and 2.0
    )
    options = TranscriptionOptions(locales=["en-US"], phrase_list=phrase_list)
    result = client.transcribe(TranscriptionContent(definition=options, audio=audio_file))

    print(result.combined_phrases[0].text)

További információ: A felismerési pontosság javítása kifejezéslistával.

Hivatkozás: PhraseListProperties, TranscriptionOptions

Trágárság szűrése

A paraméterrel szabályozhatja, hogyan jelenik meg a trágárság az profanity_filter_mode átírási kimenetben. A következő módok érhetők el:

Mód Viselkedés
"None" A trágárság változatlanul halad át.
"Masked" A trágárság csillagokkal kerül helyettesítésre (alapértelmezett).
"Removed" A trágárság teljes egészében törlődik a kimenetből.
"Tags" A profanitás XML-címkékbe <profanity> van csomagolva.
from azure.core.credentials import AzureKeyCredential
from azure.ai.transcription import TranscriptionClient
from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions

client = TranscriptionClient(
    endpoint=endpoint, credential=AzureKeyCredential(api_key)
)

with open(audio_file_path, "rb") as audio_file:
    options = TranscriptionOptions(
        locales=["en-US"],
        profanity_filter_mode="Masked"  # Options: "None", "Removed", "Masked", "Tags"
    )
    result = client.transcribe(TranscriptionContent(definition=options, audio=audio_file))

    print(result.combined_phrases[0].text)

Hivatkozás: TranscriptionOptions

Referencia dokumentáció | Csomag (NuGet) | GitHub minták

Előfeltételek

Microsoft Entra ID előfeltételek

A Microsoft Entra ID javasolt kulcs nélküli hitelesítéséhez a következőket kell elvégeznie:

  • Telepítse az Azure CLI-t, amelyet a Microsoft Entra ID kulcs nélküli hitelesítéshez használnak.
  • Jelentkezzen be az Azure CLI-be a az login parancs futtatásával.
  • Rendelje hozzá a szerepkört Cognitive Services User a felhasználói fiókjához. Szerepköröket a Azure portálon a Access control (IAM)>A szerepkör-hozzárendelés hozzáadása területen rendelhet hozzá.

A projekt beállítása

  1. Hozzon létre egy új konzolalkalmazást a .NET parancssori felülettel:

    dotnet new console -n transcription-quickstart
    cd transcription-quickstart
    
  2. Telepítse a szükséges csomagokat:

    dotnet add package Azure.AI.Speech.Transcription
    dotnet add package Azure.Identity
    

Erőforrásadatok lekérése

Önnek le kell kérnie az erőforráshoz tartozó végpontot a hitelesítéshez.

  1. Jelentkezzen be az Foundry portálra.

  2. Válassza a Felügyeleti központ lehetőséget a bal oldali menüből. A Csatlakoztatott erőforrások területen válassza ki a Speech vagy a többszolgáltatásos erőforrást.

  3. Válassza a Kulcsok és végpont lehetőséget.

  4. Másolja ki a végpontértéket , és állítsa be környezeti változóként:

    $env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
    

Hang átírása

Cserélje le a következő kód tartalmát Program.cs :

using System;
using System.ClientModel;
using System.Linq;
using System.Threading.Tasks;
using Azure.AI.Speech.Transcription;
using Azure.Identity;

Uri endpoint = new Uri(Environment.GetEnvironmentVariable("AZURE_SPEECH_ENDPOINT")
    ?? throw new InvalidOperationException("Set the AZURE_SPEECH_ENDPOINT environment variable."));

// Use DefaultAzureCredential for keyless authentication (recommended).
// To use an API key instead, replace with:
// ApiKeyCredential credential = new ApiKeyCredential("<your-api-key>");
var credential = new DefaultAzureCredential();
TranscriptionClient client = new TranscriptionClient(endpoint, credential);

string audioFilePath = "<path-to-your-audio-file.wav>";
using FileStream audioStream = File.OpenRead(audioFilePath);

TranscriptionOptions options = new TranscriptionOptions(audioStream);
ClientResult<TranscriptionResult> response = await client.TranscribeAsync(options);

var channelPhrases = response.Value.CombinedPhrases.First();
Console.WriteLine(channelPhrases.Text);

Futtassa az alkalmazást:

dotnet run

A hangfájlból átírt szöveg megjelenik a konzolon.

Szószintű adatok elérése

Az időbélyegek, a megbízhatósági pontszámok és az egyes szavak eléréséhez iterálja át a kifejezéseket:

foreach (TranscribedPhrase phrase in response.Value.Phrases)
{
    Console.WriteLine($"\nPhrase: {phrase.Text}");
    Console.WriteLine($"  Offset: {phrase.Offset} | Duration: {phrase.Duration}");
    Console.WriteLine($"  Confidence: {phrase.Confidence:F2}");

    foreach (TranscribedWord word in phrase.Words)
    {
        Console.WriteLine(
            $"    Word: '{word.Text}' | " +
            $"Confidence: {word.Confidence:F2} | " +
            $"Offset: {word.Offset}");
    }
}

Hivatkozás: TranscribedPhrase, TranscribedWord

Beszélők azonosítása diarizálással

A hangszóró-diarizálás azonosítja, hogy ki beszélt több hangszórós hang esetén:

TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
    DiarizationOptions = new TranscriptionDiarizationOptions
    {
        MaxSpeakers = 4
    }
};

ClientResult<TranscriptionResult> response = await client.TranscribeAsync(options);

foreach (TranscribedPhrase phrase in response.Value.Phrases)
{
    Console.WriteLine($"Speaker {phrase.Speaker}: {phrase.Text}");
}

Hivatkozás: TranscriptionDiarizationOptions

Referencia dokumentáció | Package (npm) | GitHub minták

Előfeltételek

Microsoft Entra ID előfeltételek

A Microsoft Entra ID javasolt kulcs nélküli hitelesítéséhez a következőket kell elvégeznie:

  • Telepítse az Azure CLI-t, amelyet a Microsoft Entra ID kulcs nélküli hitelesítéshez használnak.
  • Jelentkezzen be az Azure CLI használatával a az login futtatásával.
  • Rendelje hozzá a szerepkört Cognitive Services User a felhasználói fiókjához. Szerepköröket a Azure portálon a Access control (IAM)>A szerepkör-hozzárendelés hozzáadása területen rendelhet hozzá.

A projekt beállítása

  1. Hozzon létre egy új mappát, és inicializáljon egy Node.js projektet:

    mkdir transcription-quickstart
    cd transcription-quickstart
    npm init -y
    
  2. Telepítse a szükséges csomagokat:

    npm install @azure/ai-speech-transcription @azure/identity
    
  3. Konfigurálja a projektet ES-modulok használatára úgy, hogy hozzáadja a modultípust a következőhöz package.json:

    npm pkg set type=module
    

    Vagy manuálisan is hozzáadhatja a "type": "module" elemet a package.json fájlba. Ez szükséges a mintakódban szereplő utasítások működéséhez import.

Erőforrásadatok lekérése

Önnek le kell kérnie az erőforráshoz tartozó végpontot a hitelesítéshez.

  1. Jelentkezzen be az Foundry portálra.

  2. Válassza a Felügyeleti központ lehetőséget a bal oldali menüből. A Csatlakoztatott erőforrások területen válassza ki a Speech vagy a többszolgáltatásos erőforrást.

  3. Válassza a Kulcsok és végpont lehetőséget.

  4. Másolja ki a végpontértéket , és állítsa be környezeti változóként:

    $env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
    

Hang átírása

  1. Hozzon létre egy fájlt transcribe-audio-file.js a következő kóddal:

    import { readFileSync } from "node:fs";
    import { DefaultAzureCredential } from "@azure/identity";
    import { TranscriptionClient } from "@azure/ai-speech-transcription";
    
    const endpoint = process.env.AZURE_SPEECH_ENDPOINT;
    if (!endpoint) {
      throw new Error("Set the AZURE_SPEECH_ENDPOINT environment variable.");
    }
    
    // Use DefaultAzureCredential for keyless authentication (recommended).
    const client = new TranscriptionClient(endpoint, new DefaultAzureCredential());
    
    const audioFile = readFileSync("<path-to-your-audio-file.wav>");
    
    const result = await client.transcribe(audioFile, {
      locales: ["en-US"],
    });
    
    console.log("Transcription:", result.combinedPhrases[0]?.text ?? "No text");
    

    Referencia: TranscriptionClient | DefaultAzureCredential

  2. Cserélje le a <path-to-your-audio-file.wav> útvonalat a hangfájléra.

  3. Futtassa az alkalmazást:

    node transcribe-audio-file.js
    

Kimenet

Az alkalmazás kinyomtatja az átírt szöveget a konzolra:

Transcription: Hi there! This is a sample voice recording.

Gyakori kérésbeállítások

Beszélők azonosítása diarizálással

const result = await client.transcribe(audioFile, {
  locales: ["en-US"],
  diarizationOptions: {
    maxSpeakers: 4,
  },
});

for (const phrase of result.phrases) {
  console.log(`Speaker ${phrase.speaker}: ${phrase.text}`);
}

Hivatkozás: TranscriptionDiarizationOptions

Trágárság szűrésének beállítása

import {
  KnownProfanityFilterModes,
} from "@azure/ai-speech-transcription";

const result = await client.transcribe(audioFile, {
  locales: ["en-US"],
  profanityFilterMode: KnownProfanityFilterModes.Masked,
});

Hivatkozás: KnownProfanityFilterModes

Kifejezéslista hozzáadása

Kifejezéslistával javíthatja a tartományspecifikus kifejezések, a megfelelő főnevek és a betűszók felismerését:

const result = await client.transcribe(audioFile, {
  locales: ["en-US"],
  phraseList: {
    phrases: ["Contoso", "Jessie", "Rehaan"],
  },
});

console.log("Transcription:", result.combinedPhrases[0]?.text ?? "No text");

Referencia: PhraseListProperties

Többnyelvű észlelés engedélyezése

Ha nem biztos abban, hogy melyik nyelvet beszéli, adjon át több területi jelöltet. A szolgáltatás észleli a nyelvet, és kifejezésenként adja vissza a területi beállításokat:

const result = await client.transcribe(audioFile, {
  locales: ["en-US", "es-ES"],
});

for (const phrase of result.phrases) {
  console.log(`[${phrase.locale}] ${phrase.text}`);
}

Hivatkozás: TranscribedPhrase

Reference dokumentáció | Package (Maven) | GitHub példák

Előfeltételek

A környezet beállítása

  1. Hozzon létre egy új mappát, transcription-quickstart és lépjen rá:

    mkdir transcription-quickstart && cd transcription-quickstart
    
  2. Hozzon létre egy pom.xml fájlt a projektkönyvtár gyökerében a következő tartalommal:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>transcription-quickstart</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
    
        <name>Speech Transcription Quickstart</name>
        <description>Quickstart sample for Azure Speech Transcription client library.</description>
        <url>https://github.com/Azure/azure-sdk-for-java</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-ai-speech-transcription</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-identity</artifactId>
                <version>1.18.1</version>
            </dependency>
        </dependencies>
    
        <build>
            <sourceDirectory>.</sourceDirectory>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.11.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <mainClass>TranscriptionQuickstart</mainClass>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    Megjegyzés

    A <sourceDirectory>.</sourceDirectory> konfiguráció arra utasítja a Mavent, hogy az alapértelmezett src/main/java struktúra helyett az aktuális könyvtárban keresse meg Java forrásfájlokat. Ez a konfigurációmódosítás egyszerűbb projektstruktúrát tesz lehetővé.

  3. Telepítse a függőségeket:

    mvn clean install
    

Környezeti változók beállítása

Az alkalmazást hitelesíteni kell a Speech szolgáltatás eléréséhez. Az SDK támogatja az API-kulcsot és a Microsoft Entra ID hitelesítést is. Automatikusan észleli, hogy melyik metódust használja a beállított környezeti változók alapján.

Először állítsa be a Speech-erőforrás végpontját. Cserélje le <your-speech-endpoint> a tényleges erőforrásnévre:

$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"

Ezután válasszon az alábbi hitelesítési módszerek közül:

Az API-kulcs környezeti változójának beállítása:

$env:AZURE_SPEECH_API_KEY="<your-speech-key>"

AZURE_SPEECH_API_KEY beállítása helyett konfigurálja az alábbi hitelesítő adatok egyikét:

  • Azure CLI: Futtassa az login a fejlesztői gépen.
  • Managed Identity: Az Azure-ben futó alkalmazásokhoz (App Service, Azure Functions, virtuális gépek).
  • Környezeti változók: Beállítás AZURE_TENANT_ID, AZURE_CLIENT_IDés AZURE_CLIENT_SECRET.
  • Visual Studio Code vagy IntelliJ: Jelentkezzen be az IDE-n keresztül.

A Cognitive Services felhasználói szerepkörét is hozzá kell rendelnie az identitásához:

az role assignment create --assignee <your-identity> \
    --role "Cognitive Services User" \
    --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<speech-resource-name>

Megjegyzés

Miután beállította a környezeti változókat a Windows, indítsa újra az olvasáshoz szükséges futó programokat, beleértve a konzolablakot is. Linux vagy macOS rendszeren futtassa source ~/.bashrc (vagy az azzal egyenértékű rendszerhéj-konfigurációs fájlt) a módosítások érvénybe lépéséhez.

Az alkalmazás létrehozása

Hozzon létre egy fájlt TranscriptionQuickstart.java a projektkönyvtárban a következő kóddal:

import com.azure.ai.speech.transcription.TranscriptionClient;
import com.azure.ai.speech.transcription.TranscriptionClientBuilder;
import com.azure.ai.speech.transcription.models.AudioFileDetails;
import com.azure.ai.speech.transcription.models.TranscriptionOptions;
import com.azure.ai.speech.transcription.models.TranscriptionResult;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.identity.DefaultAzureCredentialBuilder;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TranscriptionQuickstart {
    public static void main(String[] args) {
        try {
            // Get credentials from environment variables
            String endpoint = System.getenv("AZURE_SPEECH_ENDPOINT");
            String apiKey = System.getenv("AZURE_SPEECH_API_KEY");

            // Create client with API key or Entra ID authentication
            TranscriptionClientBuilder builder = new TranscriptionClientBuilder()
                .endpoint(endpoint);

            TranscriptionClient client;
            if (apiKey != null && !apiKey.isEmpty()) {
                // Use API key authentication
                client = builder.credential(new KeyCredential(apiKey)).buildClient();
            } else {
                // Use Entra ID authentication
                client = builder.credential(new DefaultAzureCredentialBuilder().build()).buildClient();
            }

            // Load audio file
            String audioFilePath = "<path-to-your-audio-file.wav>";
            byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath));

            // Create audio file details
            AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData));

            // Transcribe
            TranscriptionOptions options = new TranscriptionOptions(audioFileDetails);
            TranscriptionResult result = client.transcribe(options);

            // Print result
            System.out.println("Transcription:");
            result.getCombinedPhrases().forEach(phrase ->
                System.out.println(phrase.getText())
            );

        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Cserélje le a <path-to-your-audio-file.wav> útvonalat a hangfájléra.

Az alkalmazás futtatása

Futtassa az alkalmazást a Maven használatával:

mvn compile exec:java

Konfigurációs beállítások kérése

Az átírási viselkedés testreszabására használható TranscriptionOptions . A következő szakaszok ismertetik az egyes támogatott konfigurációkat, és bemutatják annak alkalmazását.

Többnyelvű észlelés

Ha nem ad meg területi beállításokat, a szolgáltatás automatikusan észleli és átírja a hangban található összes nyelvet. Minden visszaadott kifejezés tartalmaz egy locale mezőt, amely azonosítja az észlelt nyelvet.

// No locale specified — service auto-detects all languages in the audio
TranscriptionOptions options = new TranscriptionOptions(audioFileDetails);
TranscriptionResult result = client.transcribe(options);

// Each phrase reports the detected locale
result.getPhrases().forEach(phrase ->
    System.out.println(phrase.getLocale() + ": " + phrase.getText())
);

Megjegyzés

Ha nincs megadva területi beállítás, előfordulhat, hogy az locale egyes kifejezések mezője nem mindig tükrözi pontosan az adott kifejezés nyelvét. A legnagyobb pontosság érdekében adja meg a várt területi beállításokat, ha tudja.

Hivatkozás: TranscriptionOptions, TranscribedPhrase.getLocale()

Beszélőazonosítás

A diarizálás egyetlen hangcsatornában észleli és címkézi a különböző hangszórókat. Ezzel TranscriptionDiarizationOptions engedélyezheti, és beállíthatja a hangszórók maximális számát (2–35). Az eredményben szereplő összes kifejezés tartalmaz egy azonosítót speaker .

import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions;

// Configure diarization with a maximum of 5 speakers
TranscriptionDiarizationOptions diarizationOptions =
    new TranscriptionDiarizationOptions()
        .setMaxSpeakers(5);

TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
    .setDiarizationOptions(diarizationOptions);

TranscriptionResult result = client.transcribe(options);

// Each phrase includes the detected speaker ID
result.getPhrases().forEach(phrase ->
    System.out.println(
        "[Speaker " + phrase.getSpeaker() + "] " + phrase.getText()
    )
);

Megjegyzés

A diarizálás csak egycsatornás (mono) hangon támogatott. Ha a hang sztereó, ne állítsa be a channels tulajdonságot [0,1]-ra, amikor a diarizálás engedélyezve van.

Hivatkozás: TranscriptionDiarizationOptions, TranscriptionOptions.setDiarizationOptions(), TranscribedPhrase.getSpeaker()

Kifejezéslista

A kifejezéslista növeli a tartományspecifikus kifejezések, a megfelelő főnevek és a nem gyakori szavak felismerésének pontosságát. A hozzáadott kifejezéseket a felismerő nagyobb mértékben súlyozza, így nagyobb valószínűséggel lesznek helyesen átírva.

import com.azure.ai.speech.transcription.models.PhraseListOptions;
import java.util.Arrays;

// Add terms that appear in your audio to improve recognition
PhraseListOptions phraseListOptions = new PhraseListOptions()
    .setPhrases(Arrays.asList("Contoso", "Jessie", "Rehaan"));

TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
    .setPhraseListOptions(phraseListOptions);

TranscriptionResult result = client.transcribe(options);

result.getCombinedPhrases().forEach(phrase ->
    System.out.println(phrase.getText())
);

További információ: A felismerési pontosság javítása kifejezéslistával.

Hivatkozás: PhraseListOptions, TranscriptionOptions.setPhraseListOptions()

Trágárság szűrése

Szabályozhatja, hogy a trágárság hogyan jelenik meg az átirat kimenetében a használatával ProfanityFilterMode. A következő módok érhetők el:

Mód Viselkedés
NONE A trágárság változatlanul halad át.
MASKED A trágárság csillagokkal kerül helyettesítésre (alapértelmezett).
REMOVED A trágárság teljes egészében törlődik a kimenetből.
TAGS A profanitás XML-címkékbe van csomagolva.
import com.azure.ai.speech.transcription.models.ProfanityFilterMode;

TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
    .setProfanityFilterMode(ProfanityFilterMode.MASKED);

TranscriptionResult result = client.transcribe(options);

System.out.println(result.getCombinedPhrases().get(0).getText());

Hivatkozás: ProfanityFilterMode, TranscriptionOptions.setProfanityFilterMode()

Erőforrások törlése

Ha végzett a rövid útmutatóval, törölheti a projektmappát:

rm -rf transcription-quickstart

Átírási hiba kezelése

A gyors átírási API meghívásakor újrapróbálkozási logikát implementálhat az átmeneti hibák és sebességkorlátozások kezeléséhez. Az API kényszeríti a sebességkorlátokat, ami hibát okozhat a nagy egyidejűségi műveletek során.

  • Próbálkozzon újra legfeljebb ötször az átmeneti hibák esetén.

  • Exponenciális visszalépés használata: 2 másodperc, 4 mp, 8 mp, 16 mp, 32 mp.

  • Teljes visszalépési idő: 62 mp.

Ez a konfiguráció elegendő időt biztosít az API helyreállítására a sebességkorlátozó ablakok során, különösen akkor, ha több egyidejű feldolgozóval futtat kötegelt műveleteket.

Mikor érdemes újrapróbálkozési logikát használni?

Az újrapróbálkozás logikájának implementálása a következő hibakategóriákhoz:

  • HTTP-hibák – Újrapróbálkozás:

    • HTTP 429 (sebességkorlát)
    • HTTP 500, 502, 503, 504 (kiszolgálóhibák)
    • status_code=None (hiányos válaszletöltések)
  • Azure SDK hálózati hibák – Próbálkozzon újra:

    • ServiceRequestError
    • ServiceResponseError

    Ezek a hibák olyan alacsony szintű hálózati kivételeket fednek le, mint a urllib3.exceptions.ReadTimeoutError, a kapcsolat alaphelyzetbe állítása és a TLS hibák.

  • Python hálózati kivételek – Próbálkozzon újra:

    • ConnectionError
    • TimeoutError
    • OSError

Ne próbálkozzon újra a következő hibákon, mert az ügyféloldali, javítást igénylő problémákat jeleznek:

  • HTTP 400 (hibás kérés)
  • HTTP 401 (jogosulatlan)
  • HTTP 422 (feldolgozhatatlan entitás)
  • Egyéb ügyfélhibák (4xx állapotkódok)

Végrehajtási megjegyzések

  • Minden újrapróbálkozási kísérlet előtt állítsa alaphelyzetbe a hangfájl-adatfolyamot (seek(0)).

  • Egyidejű feldolgozók használata esetén előfordulhat, hogy az alapértelmezett HTTP-olvasási időtúllépés (300 másodperc) nagy sebességkorlátozás mellett túlléphető.

  • Az API elfogadhat egy kérést, de időtúllépést eredményezhet a válasz létrehozásakor. Ez a feltétel általános HTTP-hiba helyett SDK-burkolt hálózati hibaként jelenhet meg.