Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Subskrypcja Azure. Utwórz je bezpłatnie.
Projekt Foundry. Jeśli chcesz utworzyć projekt, zobacz Tworzenie projektu Microsoft Foundry.
Wypróbuj mowę LLM
-
Zaloguj się do Microsoft Foundry. Upewnij się, że przełącznik New Foundry jest włączony. Te kroki dotyczą rozwiązania Foundry (nowy).
Z menu w prawym górnym rogu wybierz pozycję Kompiluj.
W okienku po lewej stronie wybierz pozycję Modele.
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.
Z listy rozwijanej wybierz pozycję Mowa LLM.
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.
Użyj sekcji Przekazywanie plików , aby wybrać plik audio. Następnie wybierz pozycję Uruchom.
Wyświetl dane wyjściowe transkrypcji na karcie Transkrypcja . Opcjonalnie wyświetl nieprzetworzone dane wyjściowe odpowiedzi interfejsu API na karcie JSON .
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
YourSpeechResoureKeykluczem zasobu usługi Mowy. - zastąp
YourResourceNamenazwą 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
durationMillisecondsioffsetMillisecondsnie są obsługiwane dla zadaniatranslate.Diarization nie jest obsługiwana dla tego
translatezadania. Zwracana jest tylko etykietaspeaker1.confidencejest niedostępne i zawsze0.
Dokumentacja referencyjna
Wymagania wstępne
Subskrypcja Azure. Utwórz je bezpłatnie.
Python w wersji 3.9 lub nowszej. Jeśli nie masz zainstalowanej odpowiedniej wersji Python, możesz wykonać instrukcje opisane w samouczku Visual Studio Code Python. W tym samouczku przedstawiono najprostszy sposób instalowania Python w systemie operacyjnym.
Zasób Microsoft Foundry utworzony w jednym z obsługiwanych regionów. Aby uzyskać więcej informacji na temat dostępności regionów, zobacz Obsługa regionów.
Przykładowy
.wavplik audio do transkrypcji.
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
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-quickstartAby 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ń:
Po aktywowaniu środowiska Python uruchomienie
pythonlubpipz wiersza polecenia używa interpretera Python w folderze.venvaplikacji. Użyj poleceniadeactivate, aby zamknąć środowisko wirtualne Python. Możesz ją ponownie uaktywnić później w razie potrzeby.Utwórz plik o nazwie requirements.txt. Dodaj następujące pakiety do pliku:
azure-ai-transcription azure-identityZainstaluj pakiety:
pip install -r requirements.txt
Ustawianie zmiennych środowiskowych
Musisz pobrać punkt końcowy zasobu i klucz API na potrzeby uwierzytelniania.
Zaloguj się do portalu Foundry (wersja klasyczna).
Wybierz pozycję Centrum zarządzania z menu po lewej stronie.
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.
Ustaw następujące zmienne środowiskowe:
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.
Utwórz plik o nazwie
llm_speech_transcribe.pyz 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.
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 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.
Użyj powyższego kodu, ale określ parametr
taskjakotranslatei dodaj elementtarget_languagew plikuEnhancedModeProperties:# 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.
Zastąp
<path-to-your-audio-file.wav>ścieżką do pliku audio.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
Subskrypcja Azure. Utwórz je bezpłatnie.
Potrzebny jest SDK .NET 8.0 lub nowszy.
Zasób Microsoft Foundry utworzony w jednym z obsługiwanych regionów. Aby uzyskać więcej informacji na temat dostępności regionów, zobacz Obsługa regionów.
Przykładowy
.wavplik audio do transkrypcji.
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
Utwórz nową aplikację konsolową przy użyciu interfejsu wiersza polecenia .NET:
dotnet new console -n llm-speech-quickstart cd llm-speech-quickstartZainstaluj 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.
Zaloguj się do portalu Foundry.
Wybierz pozycję Centrum zarządzania z menu po lewej stronie. W obszarze Połączone zasoby wybierz zasób, Speech lub zasób wielousługowy.
Wybierz Klucze i punkt końcowy.
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
Subskrypcja Azure. Utwórz je bezpłatnie.
Zasób Microsoft Foundry utworzony w regionie obsługującym mowę LLM. Aby uzyskać więcej informacji na temat dostępności regionów, zobacz Obsługa regionów.
Przykładowy
.wavplik audio do transkrypcji.
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
Utwórz nowy folder o nazwie
llm-speech-quickstart, a następnie przejdź do folderu:mkdir llm-speech-quickstart && cd llm-speech-quickstartZainicjuj 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.
Zaloguj się do portalu Foundry.
Wybierz pozycję Centrum zarządzania z menu po lewej stronie. W obszarze Połączone zasoby wybierz zasób, Speech lub zasób wielousługowy.
Wybierz Klucze i punkt końcowy.
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
Subskrypcja Azure. Utwórz je bezpłatnie.
Apache Maven na potrzeby zarządzania zależnościami i kompilowania projektu.
Zasób usługi Mowa w jednym z obsługiwanych regionów. Aby uzyskać więcej informacji na temat dostępności w regionach, zobacz Obsługiwane regiony usługi Mowa.
Przykładowy
.wavplik audio do transkrypcji.
Konfigurowanie środowiska
Utwórz nowy folder o nazwie
llm-speech-quickstart, a następnie przejdź do niego:mkdir llm-speech-quickstart && cd llm-speech-quickstartUtwó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 strukturysrc/main/java. Ta zmiana konfiguracji umożliwia prostszą, płaską strukturę projektu.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.
Następnie wybierz jedną z następujących metod uwierzytelniania.
Uwierzytelnianie klucza interfejsu API (zalecane do rozpoczęcia pracy)
Ustaw zmienną środowiskową klucza interfejsu API:
Uwierzytelnianie Microsoft Entra ID (zalecane w środowisku produkcyjnym)
Zamiast ustawiać AZURE_SPEECH_API_KEY, skonfiguruj jedno z następujących źródeł poświadczeń:
Azure CLI: Uruchom
az loginna 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, iAZURE_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.
Zalecana konfiguracja ponawiania prób
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ę:
ServiceRequestErrorServiceResponseError
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ę:
ConnectionErrorTimeoutErrorOSError
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.