Mowę LLM na potrzeby transkrypcji i tłumaczenia mowy

Mowę LLM to interfejs API w narzędziu Microsoft Foundry. Duży model językowy (LLM) rozszerza model mowy, zapewniając lepszą jakość, głębokie zrozumienie kontekstowe, obsługę wielojęzyczną i możliwości dostrajania monitów. Używa przyspieszania procesora GPU w celu bardzo szybkiego wnioskowania, dzięki czemu idealnie nadaje się do szerokiej gamy scenariuszy. Na przykład użyj usługi LLM Speech, aby wygenerować podpisy i napisy z plików audio, podsumować notatki ze spotkania, asystować agentów centrum telefonicznego i transkrybować wiadomości głosowe.

Dostępność funkcji

Tabela przedstawia funkcje transkrypcji obsługiwane przez interfejs API szybkiej transkrypcji, zarówno z obsługą Mowy LLM, jak i bez niej.

Funkcja Szybka transkrypcja (domyślna) Ulepszona technologia mowy LLM Transkrypcja MAI
Transkrypcja ✅ (modele transkrypcji mowy) ✅ (model wielomodalny) ✅ (model wielomodalny)
Tłumaczenie ✅ (model wielomodalny)
Diarization
Kanał (stereo)
Filtrowanie wulgaryzmów
Określanie ustawień regionalnych
Niestandardowe podpowiedzi
Lista fraz 1
Znaczniki czasu na poziomie segmentu
Znaczniki czasu na poziomie programu Word

1W przypadku mowy LLM użyj monitowania, aby kierować stylem danych wyjściowych zamiast używać jawnej listy fraz.

Obsługiwane języki

Następujące języki wejściowe są obsługiwane zarówno w zadaniach transkrypcji, jak i tłumaczenia: Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese, Russian, Spanish, Swedish, Thai, Turkish.

Usługa działa domyślnie w trybie wielojęzycznym, więc nie trzeba określać ustawień regionalnych języka wejściowego. Opcjonalnie, aby ukierunkować rozpoznawanie na określony wariant regionalny języka, można ustawić parametr locales za pomocą obsługiwanego kodu ustawień regionalnych (na przykład en-us). Aby uzyskać więcej informacji o obsługiwanych wariantach językowych, zobacz sekcję obsługiwane języki.

Możesz wypróbować mowę LLM w Microsoft Foundry bez konieczności pisania kodu.

Wymagania wstępne

Wypróbuj mowę LLM

  1. Zaloguj się do Microsoft Foundry. Upewnij się, że przełącznik New Foundry jest włączony. Te kroki dotyczą rozwiązania Foundry (nowy).

  2. Z menu w prawym górnym rogu wybierz pozycję Kompiluj.

  3. W okienku po lewej stronie wybierz pozycję Modele.

  4. Na karcie Usługi AI są wyświetlane modele Foundry, których można użyć w portalu Foundry. Wybierz Azure Speech — zamiana mowy na tekst.

  5. Z listy rozwijanej wybierz pozycję Mowa LLM.

  6. Opcjonalnie użyj sekcji Parametry , aby zmienić język, zasady wulgaryzmów i inne ustawienia. Możesz również dodać specjalne instrukcje dotyczące usługi LLM.

  7. Użyj sekcji Przekazywanie plików , aby wybrać plik audio. Następnie wybierz pozycję Uruchom.

  8. Wyświetl dane wyjściowe transkrypcji na karcie Transkrypcja . Opcjonalnie wyświetl nieprzetworzone dane wyjściowe odpowiedzi interfejsu API na karcie JSON .

  9. Przejdź do karty Kod , aby uzyskać przykładowy kod na potrzeby korzystania z mowy LLM w aplikacji.

Wymagania wstępne

  • Zasób Azure Speech in Foundry Tools w jednym z regionów, w których jest dostępny interfejs API rozpoznawania mowy w usłudze LLM. Aby uzyskać bieżącą listę obsługiwanych regionów, zobacz Regiony usługi Mowa.

  • Plik audio o długości mniejszej niż pięć godzin i mniejszy niż 500 MB. Plik audio musi być w jednym z formatów i koderów kodowych obsługiwanych przez interfejs API transkrypcji wsadowej: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW w kontenerze WAV, MULAW w kontenerze WAV, AMR, WebM lub SPEEX. Aby uzyskać więcej informacji na temat obsługiwanych formatów audio, zobacz obsługiwane formaty audio.

Korzystanie z interfejsu API rozpoznawania mowy w usłudze LLM

W następnych kilku sekcjach przedstawiono szczegółowe informacje o sposobie korzystania z tego interfejsu API.

Przekazywanie dźwięku

Dane audio można udostępniać na następujące sposoby:

  • Przekazywanie danych audio w linii.

      --form 'audio=@"YourAudioFile"'
    
  • Prześlij plik audio z publicznego audioUrl.

      --form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
    

Wskazówka

W przypadku długich plików audio zalecamy przesłanie przez publiczny adres URL.

W tym artykule używamy bezpośredniego przesyłania audio jako przykładu.

Wywołaj interfejs API LLM Speech.

W żądaniu POST do punktu końcowego transcriptions użyj typu zawartości multipart/form-data z plikiem audio oraz właściwościami treści żądania.

W poniższym przykładzie pokazano, jak transkrybować plik audio z określonymi ustawieniami regionalnymi. Jeśli znasz ustawienia regionalne pliku audio, możesz określić go, aby poprawić dokładność transkrypcji i zminimalizować opóźnienie.

  • Zastąp YourSpeechResoureKey kluczem zasobu usługi Mowy.
  • zastąp YourResourceName nazwą zasobu Speech.
  • Zastąp YourAudioFile ścieżką do pliku audio.

Ważne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID, zastąp --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' znakiem --header "Authorization: Bearer YourAccessToken". Aby uzyskać więcej informacji na temat uwierzytelniania bez klucza, zobacz przewodnik dotyczący kontroli dostępu opartej na rolach .

Transkrypcja pliku audio przy użyciu mowy LLM

Dźwięk można transkrybować w języku wejściowym bez określania kodu ustawień regionalnych. Model automatycznie wykrywa i wybiera odpowiedni język na podstawie zawartości audio.

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.wav"' \
--form 'definition={
  "enhancedMode": {
    "enabled": true,
    "task": "transcribe"
  }
}'

Tłumaczenie pliku audio przy użyciu mowy LLM

Dźwięk można przetłumaczyć na określony język docelowy. Aby włączyć tłumaczenie, musisz podać kod języka docelowego w żądaniu.

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.wav"' \
--form 'definition={
  "enhancedMode": {
    "enabled": true,
    "task": "translate",
    "targetLanguage": "ko"
  }
}'

Następujące języki docelowe są obsługiwane w targetLanguage poprzez określenie odpowiedniego kodu języka.

Kod języka Język
de Niemiecki
en Angielski
es Hiszpański
fr Francuski
it Włoski
ko Koreański
ja Japoński
pt Portugalski
zh Chiński

Wykorzystanie dostrajania promptów w celu zmiany wydajności

Możesz podać opcjonalny tekst, aby pokierować stylem wyjściowym transcribe lub translate dla zadania.

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.wav"' \
--form 'definition={
  "enhancedMode": {
    "enabled": true,
    "task": "transcribe",
    "prompt": ["Output must be in lexical format."]
  }
}'

Oto kilka najlepszych rozwiązań dotyczących monitów:

  • Polecenia mogą mieć maksymalnie 20 000 znaków.

  • Wskazówki powinny być napisane najlepiej w języku angielskim.

  • Polecenia mogą służyć do formatowania danych wyjściowych. Domyślnie odpowiedzi używają formatu wyświetlania zoptymalizowanego pod kątem czytelności. Aby wymusić formatowanie leksykalne, należy uwzględnić następujące elementy: Output must be in lexical format.

  • Zachęty mogą wzmocnić istotność określonych fraz lub akronimów, zwiększając prawdopodobieństwo rozpoznania. Użyj: Pay attention to *phrase1*, *phrase2*, …. Aby uzyskać najlepsze wyniki, ogranicz do mniej niż 2000 słów lub fraz.

  • Monity, które nie są związane z zadaniami mowy (na przykład Tell me a story.), są zwykle pomijane.

Więcej opcji konfiguracji

Możesz połączyć dodatkowe opcje konfiguracji z szybką transkrypcją , aby włączyć rozszerzone funkcje, takie jak diarization, profanityFilterModei channels.

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.wav"' \
--form 'definition={
  "enhancedMode": {
    "enabled": true,
    "task": "transcribe",
    "prompt": ["Output must be in lexical format."]
  },
  "diarization": {
    "maxSpeakers": 2,
    "enabled": true
  },
  "profanityFilterMode": "Masked"
}'

Niektóre opcje konfiguracji, takie jak locales i phraseLists, nie są wymagane lub nie mają zastosowania w przypadku mowy LLM. Te opcje można pominąć w żądaniu. Dowiedz się więcej na temat opcji konfiguracji szybkiej transkrypcji.

Przykładowa odpowiedź

W odpowiedzi JSON, właściwość combinedPhrases zawiera pełną transkrypcję lub przetłumaczony tekst, a właściwość phrases zawiera szczegóły na poziomie segmentów i wyrazów.

{
    "durationMilliseconds": 57187,
    "combinedPhrases": [
        {
            "text": "With custom speech,you can evaluate and improve the microsoft speech to text accuracy for your applications and products 现成的语音转文本,利用通用语言模型作为一个基本模型,使用microsoft自有数据进行训练,并反映常用的口语。此基础模型使用那些代表各常见领域的方言和发音进行了预先训练。 Quand vous effectuez une demande de reconnaissance vocale, le modèle de base le plus récent pour chaque langue prise en charge est utilisé par défaut. Le modèle de base fonctionne très bien dans la plupart des scénarios de reconnaissance vocale. A custom model can be used to augment the base model to improve recognition of domain specific vocabulary specified to the application by providing text data to train the model. It can also be used to improve recognition based for the specific audio conditions of the application by providing audio data with reference transcriptions."
        }
    ],
    "phrases": [
        {
            "offsetMilliseconds": 80,
            "durationMilliseconds": 6960,
            "text": "With custom speech,you can evaluate and improve the microsoft speech to text accuracy for your applications and products.",
            "words": [
                {
                    "text": "with",
                    "offsetMilliseconds": 80,
                    "durationMilliseconds": 160
                },
                {
                    "text": "custom",
                    "offsetMilliseconds": 240,
                    "durationMilliseconds": 480
                },

                {
                    "text": "speech",
                    "offsetMilliseconds": 720,
                    "durationMilliseconds": 360
                },,
        // More transcription results...
        // Redacted for brevity
            ],
            "locale": "en-us",
            "confidence": 0
        },
        {
            "offsetMilliseconds": 8000,
            "durationMilliseconds": 8600,
            "text": "现成的语音转文本,利用通用语言模型作为一个基本模型,使用microsoft自有数据进行训练,并反映常用的口语。此基础模型使用那些代表各常见领域的方言和发音进行了预先训练。",
            "words": [
                {
                    "text": "现",
                    "offsetMilliseconds": 8000,
                    "durationMilliseconds": 40
                },
                {
                    "text": "成",
                    "offsetMilliseconds": 8040,
                    "durationMilliseconds": 40
                },
        // More transcription results...
        // Redacted for brevity
                {
                    "text": "训",
                    "offsetMilliseconds": 16400,
                    "durationMilliseconds": 40
                },
                {
                    "text": "练",
                    "offsetMilliseconds": 16560,
                    "durationMilliseconds": 40
                },
            ],
            "locale": "zh-cn",
            "confidence": 0
        // More transcription results...
        // Redacted for brevity
                {
                    "text": "with",
                    "offsetMilliseconds": 54720,
                    "durationMilliseconds": 200
                },
                {
                    "text": "reference",
                    "offsetMilliseconds": 54920,
                    "durationMilliseconds": 360
                },
                {
                    "text": "transcriptions.",
                    "offsetMilliseconds": 55280,
                    "durationMilliseconds": 1200
                }
            ],
            "locale": "en-us",
            "confidence": 0
        }
    ]
}

Format odpowiedzi jest zgodny z danymi wyjściowymi innymi istniejącymi formatami zamiany mowy na tekst, takimi jak transkrypcja w czasie rzeczywistym i transkrypcja wsadowa. Należy pamiętać o następujących różnicach:

  • Poziom słowa durationMilliseconds i offsetMilliseconds nie są obsługiwane dla zadania translate.

  • Diarization nie jest obsługiwana dla tego translate zadania. Zwracana jest tylko etykieta speaker1 .

  • confidence jest niedostępne i zawsze 0.

Dokumentacja referencyjna Package (PyPi)Przykłady na GitHubie

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  • Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.

  • Przypisz rolę użytkownika usług Cognitive Services do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Konfigurowanie środowiska

  1. Utwórz nowy folder o nazwie llm-speech-quickstart , a następnie przejdź do folderu za pomocą następującego polecenia:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. Aby zainstalować pakiety potrzebne w tym artykule, utwórz i aktywuj środowisko wirtualne Python. Zalecamy, aby zawsze używać środowiska wirtualnego lub conda podczas instalowania pakietów Python. W przeciwnym razie możesz przerwać globalną instalację Python. Jeśli masz już zainstalowaną Python 3.9 lub nowszą, utwórz środowisko wirtualne przy użyciu następujących poleceń:

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

    Po aktywowaniu środowiska Python uruchomienie python lub pip z wiersza polecenia używa interpretera Python w folderze .venv aplikacji. Użyj polecenia deactivate, aby zamknąć środowisko wirtualne Python. Możesz ją ponownie uaktywnić później w razie potrzeby.

  3. Utwórz plik o nazwie requirements.txt. Dodaj następujące pakiety do pliku:

    azure-ai-transcription
    azure-identity
    
  4. Zainstaluj pakiety:

    pip install -r requirements.txt
    

Ustawianie zmiennych środowiskowych

Musisz pobrać punkt końcowy zasobu i klucz API na potrzeby uwierzytelniania.

  1. Zaloguj się do portalu Foundry (wersja klasyczna).

  2. Wybierz pozycję Centrum zarządzania z menu po lewej stronie.

  3. Wybierz pozycję Łączone zasoby i znajdź zasób Microsoft Foundry (lub dodaj połączenie, jeśli nie istnieje). Następnie skopiuj wartości Klucz interfejsu API i Element docelowy (punkt końcowy). Użyj tych wartości, aby ustawić zmienne środowiskowe.

  4. Ustaw następujące zmienne środowiskowe:

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

Uwaga

W przypadku uwierzytelniania za pomocą Microsoft Entra ID (zalecane do środowisk produkcyjnych) zainstaluj azure-identity. Skonfiguruj uwierzytelnianie zgodnie z opisem w sekcji Microsoft Entra ID wymagania wstępne.

Transkrypcja dźwięku za pomocą mowy LLM

Usługa LLM Speech używa EnhancedModeProperties klasy , aby włączyć transkrypcję rozszerzoną przez duży model językowy. Model automatycznie wykrywa język w dźwięku.

  1. Utwórz plik o nazwie llm_speech_transcribe.py z następującym kodem:

    import os
    from dotenv import load_dotenv
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.transcription import TranscriptionClient
    
    load_dotenv()
    from azure.ai.transcription.models import (
        TranscriptionContent,
        TranscriptionOptions,
        EnhancedModeProperties,
    )
    
    # Get configuration from environment variables
    endpoint = os.environ["AZURE_SPEECH_ENDPOINT"]
    
    # Optional: we recommend using role based access control (RBAC) for production scenarios
    api_key = os.environ["AZURE_SPEECH_API_KEY"]
    
    if api_key:
        credential = AzureKeyCredential(api_key)
    else:
        from azure.identity import DefaultAzureCredential
        credential = DefaultAzureCredential()   
    
    # Create the transcription client
    client = TranscriptionClient(endpoint=endpoint, credential=credential)
    
    # 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 enhanced mode properties for LLM Speech transcription
        enhanced_mode = EnhancedModeProperties(
            task="transcribe",
            prompt=[],
        )
    
        # Create transcription options with enhanced mode
        options = TranscriptionOptions(enhanced_mode=enhanced_mode)
    
        # 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]: {phrase.text}")
    

    Aby uzyskać więcej informacji, zobacz następujące odwołania: TranscriptionClient, TranscriptionContent, TranscriptionOptions i EnhancedModeProperties.

  2. Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio. Usługa obsługuje formatY WAV, MP3, FLAC, OGG i inne typowe formaty audio.

  3. Uruchom skrypt Python.

    python llm_speech_transcribe.py
    

Dane wyjściowe transkrypcji

Skrypt wyświetla wynik transkrypcji w konsoli:

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 one, two, three, 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]: Hi there.
  [800ms]: This is a sample voice recording created for speech synthesis testing.
  [5440ms]: The quick brown fox jumps over the lazy dog.
  [9040ms]: Just a fun way to include every letter of the alphabet.
  [12720ms]: Numbers, like one, two, three, are spoken clearly.
  [17200ms]: Let's see how well this voice captures tone, timing, and natural rhythm.
  [22480ms]: This audio is provided by samplefiles.com.

Tłumaczenie dźwięku za pomocą mowy LLM

Możesz również użyć mowy LLM, aby przetłumaczyć dźwięk na język docelowy. Ustaw task na translate, a następnie określ target_language.

  1. Użyj powyższego kodu, ale określ parametr task jako translate i dodaj element target_language w pliku EnhancedModeProperties:

    
    # Open and read the audio file
    with open(audio_file_path, "rb") as audio_file:
        # Create enhanced mode properties for LLM Speech translation
        # Translate to another language
        enhanced_mode = EnhancedModeProperties(
            task="translate",
            target_language="de",
            prompt=[
                "Translate the following audio to German.",
                "Convert number words to numbers."
            ],  # Optional prompts to guide the enhanced mode
        )
    
        # Create transcription options with enhanced mode
        options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode)
    

    Aby uzyskać więcej informacji, zobacz następujące odwołania: TranscriptionClient i EnhancedModeProperties.

  2. Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio.

  3. Uruchom skrypt Python.

    python llm_speech_translate.py
    

Korzystanie z dostrajania monitów

Możesz podać opcjonalny monit, aby pokierować stylem danych wyjściowych dla zadań transkrypcji lub tłumaczenia. Zamień wartość prompt w obiekcie EnhancedModeProperties.

# Open and read the audio file
with open(audio_file_path, "rb") as audio_file:
    # Create enhanced mode properties for LLM Speech transcription
    enhanced_mode = EnhancedModeProperties(
        task="transcribe",
        prompt=[
            "Create lexical output only,",
            "Convert number words to numbers."
        ],  # Optional prompts to guide the enhanced mode, prompt="Create lexical transcription.")
    )


Najlepsze rozwiązania dotyczące monitów

  • Podpowiedzi mają maksymalną długość 4,096 znaków.

  • Wskazówki powinny być napisane najlepiej w języku angielskim.

  • Użyj Output must be in lexical format. polecenia , aby wymusić formatowanie leksykalne zamiast domyślnego formatu wyświetlania.

  • Służy Pay attention to *phrase1*, *phrase2*, … do ulepszania rozpoznawania określonych fraz lub akronimów.

Aby uzyskać więcej informacji, zobacz następujące informacje: EnhancedModeProperties.

Wyjście

Skrypt wyświetla wynik transkrypcji w konsoli:

Transcription: Hello, this is a test of the LLM Speech transcription service.

Detailed phrases:
  [0ms]: Hello, this is a test
  [1500ms]: of the LLM Speech transcription service.

Dokumentacja referencyjna | Package (NuGet) | Przykłady GitHub

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  • Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.

  • Zaloguj się przy użyciu Azure CLI, uruchamiając az login.

  • Przypisz rolę użytkownika usług Cognitive Services do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Konfigurowanie projektu

  1. Utwórz nową aplikację konsolową przy użyciu interfejsu wiersza polecenia .NET:

    dotnet new console -n llm-speech-quickstart
    cd llm-speech-quickstart
    
  2. Zainstaluj wymagane pakiety:

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

Pobieranie informacji o zasobie

Musisz pobrać punkt końcowy zasobu na potrzeby uwierzytelniania.

  1. Zaloguj się do portalu Foundry.

  2. Wybierz pozycję Centrum zarządzania z menu po lewej stronie. W obszarze Połączone zasoby wybierz zasób, Speech lub zasób wielousługowy.

  3. Wybierz Klucze i punkt końcowy.

  4. Skopiuj wartość Punkt końcowy i ustaw ją jako zmienną środowiskową:

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

Transkrypcja dźwięku za pomocą mowy LLM

Usługa LLM Speech używa EnhancedModeProperties klasy , aby włączyć transkrypcję rozszerzoną przez duży model językowy. Podczas tworzenia wystąpienia EnhancedModeProperties tryb rozszerzony zostaje automatycznie włączony. Model automatycznie wykrywa język w dźwięku.

Zastąp zawartość Program.cs następującym kodem:

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);

// Create enhanced mode properties for LLM Speech transcription
TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
    EnhancedMode = new EnhancedModeProperties
    {
        Task = "transcribe"
    }
};

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

// Print combined transcription
foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
    Console.WriteLine($"Transcription: {combinedPhrase.Text}");
}

// Print detailed phrase information
Console.WriteLine("\nDetailed phrases:");
foreach (var phrase in response.Value.Phrases)
{
    Console.WriteLine($"  [{phrase.Offset}] ({phrase.Locale}): {phrase.Text}");
}

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio. Usługa obsługuje formatY WAV, MP3, FLAC, OGG i inne typowe formaty audio.

Uruchom aplikację:

dotnet run

Aby uzyskać więcej informacji, zobacz następujące odwołania: TranscriptionClient i EnhancedModeProperties.

Tłumaczenie dźwięku za pomocą mowy LLM

Możesz również użyć mowy LLM, aby przetłumaczyć dźwięk na język docelowy. Ustaw Task na translate i określ TargetLanguage:

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."));

var credential = new DefaultAzureCredential();
TranscriptionClient client = new TranscriptionClient(endpoint, credential);

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

// Create enhanced mode properties for LLM Speech translation
TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
    EnhancedMode = new EnhancedModeProperties
    {
        Task = "translate",
        TargetLanguage = "de"
    }
};

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

// Print translation result
foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
    Console.WriteLine($"Translation: {combinedPhrase.Text}");
}

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio.

Aby uzyskać więcej informacji, zobacz następujące informacje: EnhancedModeProperties.

Korzystanie z dostrajania monitów

Możesz podać opcjonalny monit, aby pokierować stylem danych wyjściowych dla zadań transkrypcji lub tłumaczenia:

TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
    EnhancedMode = new EnhancedModeProperties
    {
        Task = "transcribe",
        Prompt = { "Output must be in lexical format." }
    }
};

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

foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
    Console.WriteLine($"Transcription: {combinedPhrase.Text}");
}

Najlepsze rozwiązania dotyczące monitów

  • Podpowiedzi mają maksymalną długość 4,096 znaków.

  • Wskazówki powinny być napisane najlepiej w języku angielskim.

  • Użyj Output must be in lexical format. polecenia , aby wymusić formatowanie leksykalne zamiast domyślnego formatu wyświetlania.

  • Służy Pay attention to *phrase1*, *phrase2*, … do ulepszania rozpoznawania określonych fraz lub akronimów.

Aby uzyskać więcej informacji, zobacz następujące informacje: EnhancedModeProperties.

Czyszczenie zasobów

Po zakończeniu pracy z przewodnikiem Szybki start usuń folder projektu:

Remove-Item -Recurse -Force llm-speech-quickstart

dokumentacja referencyjna | Pakiet (npm) | przykłady GitHub

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  1. Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.

  2. Zaloguj się przy użyciu Azure CLI, uruchamiając az login.

  3. Przypisz rolę użytkownika usług Cognitive Services do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Konfigurowanie projektu

  1. Utwórz nowy folder o nazwie llm-speech-quickstart, a następnie przejdź do folderu:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. Zainicjuj projekt Node.js i zainstaluj wymagane pakiety:

    npm init -y
    npm install @azure/ai-speech-transcription @azure/identity
    

Pobieranie informacji o zasobie

Musisz pobrać punkt końcowy zasobu na potrzeby uwierzytelniania.

  1. Zaloguj się do portalu Foundry.

  2. Wybierz pozycję Centrum zarządzania z menu po lewej stronie. W obszarze Połączone zasoby wybierz zasób, Speech lub zasób wielousługowy.

  3. Wybierz Klucze i punkt końcowy.

  4. Skopiuj wartość Punkt końcowy i ustaw ją jako zmienną środowiskową:

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

Transkrypcja dźwięku za pomocą mowy LLM

Użycie opcji enhancedMode w LLM Speech umożliwia transkrypcję wspomaganą przez duży model językowy. Model automatycznie wykrywa język w dźwięku.

Utwórz plik o nazwie index.js z następującym kodem:

const {
  TranscriptionClient,
} = require("@azure/ai-speech-transcription");
const { DefaultAzureCredential } = require("@azure/identity");
const fs = require("fs");

async function main() {
  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). To use an API key instead, replace with:
  // const { AzureKeyCredential } = require("@azure/core-auth");
  // const credential = new AzureKeyCredential("<your-api-key>");
  const credential = new DefaultAzureCredential();
  const client = new TranscriptionClient(endpoint, credential);

  const audioFilePath = "<path-to-your-audio-file.wav>";
  const audioFile = fs.readFileSync(audioFilePath);

  // Use enhancedMode for LLM speech transcription
  const result = await client.transcribe(audioFile, {
    enhancedMode: {
      task: "transcribe",
    },
  });

  // Print the combined transcription text
  console.log("Transcription:", result.combinedPhrases[0]?.text);

  // Print detailed phrase information
  for (const phrase of result.phrases) {
    console.log(
      `  [${phrase.offsetMilliseconds}ms]`
        + ` (${phrase.locale}): ${phrase.text}`
    );
  }
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
  process.exit(1);
});

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio. Usługa obsługuje formatY WAV, MP3, FLAC, OGG i inne typowe formaty audio.

Uruchom aplikację:

node index.js

Wskazówka

Jeśli otrzymasz wynik Enhanced mode is currently not supported yet, sprawdź, czy punkt końcowy znajduje się w regionie obsługującym mowę LLM.

Aby uzyskać więcej informacji, zobacz następujące informacje: TranscriptionClient.

Dane wyjściowe transkrypcji

Aplikacja wyświetla wynik transkrypcji w konsoli:

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 one, two, three, are spoken clearly. Let's see how well this voice captures tone, timing, and natural rhythm. This audio is provided by samplefiles.com.
  [40ms] (en-US): Hi there.
  [800ms] (en-US): This is a sample voice recording created for speech synthesis testing.
  [5440ms] (en-US): The quick brown fox jumps over the lazy dog.
  [9040ms] (en-US): Just a fun way to include every letter of the alphabet.
  [12720ms] (en-US): Numbers, like one, two, three, are spoken clearly.
  [17200ms] (en-US): Let's see how well this voice captures tone, timing, and natural rhythm.
  [22480ms] (en-US): This audio is provided by samplefiles.com.

Tłumaczenie dźwięku za pomocą mowy LLM

Możesz również użyć mowy LLM, aby przetłumaczyć dźwięk na język docelowy. Ustaw task na translate, a następnie określ targetLanguage:

const {
  TranscriptionClient,
} = require("@azure/ai-speech-transcription");
const { DefaultAzureCredential } = require("@azure/identity");
const fs = require("fs");

async function main() {
  const endpoint = process.env.AZURE_SPEECH_ENDPOINT;
  if (!endpoint) {
    throw new Error(
      "Set the AZURE_SPEECH_ENDPOINT environment variable."
    );
  }

  const credential = new DefaultAzureCredential();
  const client = new TranscriptionClient(endpoint, credential);

  const audioFilePath = "<path-to-your-audio-file.wav>";
  const audioFile = fs.readFileSync(audioFilePath);

  // Translate audio using enhanced mode
  const result = await client.transcribe(audioFile, {
    enhancedMode: {
      task: "translate",
      targetLanguage: "de", // Translate to German
    },
  });

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

main().catch((err) => {
  console.error("The sample encountered an error:", err);
  process.exit(1);
});

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio.

Aby uzyskać więcej informacji, zobacz następujące informacje: TranscriptionClient.

Korzystanie z dostrajania monitów

Możesz podać opcjonalny monit, aby pokierować stylem danych wyjściowych dla zadań transkrypcji lub tłumaczenia:

const result = await client.transcribe(audioFile, {
  enhancedMode: {
    task: "transcribe",
    prompt: ["Output must be in lexical format."],
  },
});

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

Najlepsze rozwiązania dotyczące monitów

  • Podpowiedzi mają maksymalną długość 4,096 znaków.

  • Wskazówki powinny być napisane najlepiej w języku angielskim.

  • Użyj Output must be in lexical format. polecenia , aby wymusić formatowanie leksykalne zamiast domyślnego formatu wyświetlania.

  • Służy Pay attention to *phrase1*, *phrase2*, … do ulepszania rozpoznawania określonych fraz lub akronimów.

Wyjście

Aplikacja wyświetla wynik transkrypcji w konsoli:

Transcription: Hello this is a test of the LLM speech transcription service.

Aby uzyskać więcej informacji, zobacz następujące informacje: TranscriptionClient.

dokumentacja referencyjna | Pakiet (Maven) | przykłady GitHub

Wymagania wstępne

Konfigurowanie środowiska

  1. Utwórz nowy folder o nazwie llm-speech-quickstart, a następnie przejdź do niego:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. Utwórz plik w głównym katalogu projektu z następującą zawartością:

    <?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>
    

    Uwaga

    Konfiguracja <sourceDirectory>.</sourceDirectory> informuje narzędzie Maven o wyszukaniu plików źródłowych Java w bieżącym katalogu zamiast domyślnej struktury src/main/java. Ta zmiana konfiguracji umożliwia prostszą, płaską strukturę projektu.

  3. Zainstaluj zależności:

    mvn clean install
    

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usługi mowa Azure, aplikacja musi być uwierzytelniona. Zestaw SDK obsługuje zarówno klucz interfejsu API, jak i uwierzytelnianie Microsoft Entra ID. Automatycznie wykrywa, która metoda ma być używana na podstawie ustawionych zmiennych środowiskowych.

Najpierw ustaw punkt końcowy swojego zasobu Speech. Zastąp <your-speech-endpoint> faktyczną nazwą zasobu.

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

Następnie wybierz jedną z następujących metod uwierzytelniania.

Ustaw zmienną środowiskową klucza interfejsu API:

setx AZURE_SPEECH_API_KEY <your-speech-key>

Zamiast ustawiać AZURE_SPEECH_API_KEY, skonfiguruj jedno z następujących źródeł poświadczeń:

  • Azure CLI: Uruchom az login na komputerze deweloperskim.

  • Zarządzana tożsamość: w przypadku aplikacji działających w Azure (Azure App Service, Azure Functions, maszyn wirtualnych).

  • Zmienne środowiskowe: ustaw AZURE_TENANT_ID, AZURE_CLIENT_ID, i AZURE_CLIENT_SECRET.

  • Visual Studio Code lub IntelliJ: zaloguj się za pośrednictwem środowiska IDE.

Musisz również przypisać rolę użytkownika usług Cognitive Services do swojej tożsamości:

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>

Uwaga

Po ustawieniu zmiennych środowiskowych na Windows uruchom ponownie wszystkie uruchomione programy, które muszą je odczytać, w tym okno konsoli. W systemie Linux lub macOS uruchom source ~/.bashrc (lub równoważny plik konfiguracyjny powłoki), aby zastosować zmiany.

Transkrypcja dźwięku za pomocą mowy LLM

Usługa LLM Speech używa EnhancedModeOptions klasy , aby włączyć transkrypcję rozszerzoną przez duży model językowy. Podczas tworzenia wystąpienia EnhancedModeOptions tryb rozszerzony zostaje automatycznie włączony. Model automatycznie wykrywa język w dźwięku.

Utwórz plik o nazwie LlmSpeechQuickstart.java w katalogu projektu przy użyciu następującego kodu:

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.EnhancedModeOptions;
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.nio.file.Files;
import java.nio.file.Paths;

public class LlmSpeechQuickstart {
    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));

            // Create enhanced mode options for LLM speech transcription
            // Enhanced mode is automatically enabled when you create EnhancedModeOptions
            EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
                .setTask("transcribe");

            // Create transcription options with enhanced mode
            TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
                .setEnhancedModeOptions(enhancedModeOptions);

            // Transcribe the audio
            TranscriptionResult result = client.transcribe(options);

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

            // Print detailed phrase information
            if (result.getPhrases() != null) {
                System.out.println("\nDetailed phrases:");
                result.getPhrases().forEach(phrase ->
                    System.out.println(String.format("  [%dms] (%s): %s",
                        phrase.getOffset(),
                        phrase.getLocale(),
                        phrase.getText()))
                );
            }

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

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio. Usługa obsługuje formatY WAV, MP3, FLAC, OGG i inne typowe formaty audio.

Uruchamianie aplikacji

Uruchom aplikację przy użyciu narzędzia Maven:

mvn compile exec:java

Tłumaczenie dźwięku przy użyciu mowy LLM

Możesz również użyć mowy LLM, aby przetłumaczyć dźwięk na język docelowy. Zmodyfikuj konfigurację, EnhancedModeOptions aby ustawić zadanie na translate, a następnie określ język docelowy.

Utwórz plik o nazwie LlmSpeechTranslate.java z następującym kodem:

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.EnhancedModeOptions;
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 java.nio.file.Files;
import java.nio.file.Paths;

public class LlmSpeechTranslate {
    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
            TranscriptionClient client = new TranscriptionClientBuilder()
                .endpoint(endpoint)
                .credential(new KeyCredential(apiKey))
                .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));

            // Create enhanced mode options for LLM speech translation
            // Translate to Korean (supported languages: en, zh, de, fr, it, ja, es, pt, ko)
            EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
                .setTask("translate")
                .setTargetLanguage("ko");

            // Create transcription options with enhanced mode
            TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
                .setEnhancedModeOptions(enhancedModeOptions);

            // Translate the audio
            TranscriptionResult result = client.transcribe(options);

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

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

Zastąp <path-to-your-audio-file.wav> ścieżką do pliku audio.

Aby uruchomić przykład tłumaczenia, zaktualizuj konfigurację klasy głównej pom.xml lub uruchom polecenie:

mvn exec:java -Dexec.mainClass="LlmSpeechTranslate"

Korzystanie z dostrajania monitów

Możesz podać opcjonalny monit, aby pokierować stylem danych wyjściowych dla zadań transkrypcji lub tłumaczenia.

import java.util.Arrays;

// Create enhanced mode options with prompt-tuning
EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
    .setTask("transcribe")
    .setPrompts(Arrays.asList("Output must be in lexical format."));

// Create transcription options with enhanced mode
TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
    .setEnhancedModeOptions(enhancedModeOptions);

Najlepsze rozwiązania dotyczące monitów

  • Podpowiedzi mają maksymalną długość 4,096 znaków.

  • Wskazówki powinny być napisane najlepiej w języku angielskim.

  • Użyj Output must be in lexical format. polecenia , aby wymusić formatowanie leksykalne zamiast domyślnego formatu wyświetlania.

  • Służy Pay attention to *phrase1*, *phrase2*, … do ulepszania rozpoznawania określonych fraz lub akronimów.

Czyszczenie zasobów

Po zakończeniu pracy z przewodnikiem Szybki start usuń folder projektu:

rm -rf llm-speech-quickstart

Obsługa błędów transkrypcji

Podczas wywoływania interfejsu API do szybkiej transkrypcji zaimplementuj logikę ponawiania prób, aby obsłużyć błędy przejściowe i limitowanie szybkości. Interfejs API wymusza limity szybkości, co może spowodować błąd podczas operacji o wysokiej współbieżności.

  • Ponów próbę do pięciu razy w przypadku błędów przejściowych.

  • Użyj wycofywania wykładniczego: 2 sekundy, 4 s, 8 s, 16 s, 32 s.

  • Całkowity czas wycofywania: 62 s.

Ta konfiguracja zapewnia wystarczający czas na odzyskanie interfejsu API podczas ograniczania szybkości okien, zwłaszcza w przypadku uruchamiania operacji wsadowych z wieloma współbieżnymi procesami roboczymi.

Kiedy należy używać logiki ponawiania prób

Zaimplementuj logikę ponawiania dla następujących kategorii błędów:

  • Błędy HTTP — ponów próbę:

    • HTTP 429 (limit szybkości)
    • HTTP 500, 502, 503, 504 (błędy serwera)
    • status_code=None (niekompletne pobieranie odpowiedzi)
  • Azure SDK błędy sieci — ponów próbę:

    • ServiceRequestError
    • ServiceResponseError

    Te błędy obejmują wyjątki sieciowe niskiego poziomu, takie jak urllib3.exceptions.ReadTimeoutError, resetowanie połączeń i awarie protokołu TLS.

  • Python wyjątki sieciowe — ponów próbę:

    • ConnectionError
    • TimeoutError
    • OSError

Nie ponawiaj próby po następujących błędach, ponieważ wskazują problemy po stronie klienta, które wymagają korekty:

  • HTTP 400 (nieprawidłowe żądanie)
  • HTTP 401 (nieautoryzowany)
  • HTTP 422 (nieprzetworzona jednostka)
  • Inne błędy klienta (kody stanu 4xx)

Uwagi dotyczące implementacji

  • Zresetuj strumień plików audio (seek(0)) przed każdym ponowieniu próby.

  • W przypadku korzystania z współbieżnych procesów roboczych domyślny limit czasu odczytu HTTP (300 sekund) może zostać przekroczony w przypadku ograniczania dużej szybkości.

  • Interfejs API może zaakceptować żądanie, ale może upłynąć limit czasu podczas generowania odpowiedzi. Ten warunek może być wyświetlany jako błąd sieci opakowany za pomocą zestawu SDK, a nie standardowy błąd HTTP.