Konuşma transkripsiyonu ve çevirisi için LLM Konuşma (önizleme)

Not

Bu özellik şu anda genel önizleme aşamasındadır. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmeyebilir veya kısıtlı özelliklere sahip olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Uygun Kullanım Koşulları.

LLM Konuşma, Microsoft Foundry'deki bir API'dir. Büyük bir dil modeli (LLM), gelişmiş kalite, derin bağlamsal anlama, çok dilli destek ve istem ayarlama özellikleri sunarak konuşma modelini geliştirir. Son derece hızlı çözümlemeler için GPU hızlandırması kullanarak çok çeşitli senaryolar için idealdir. Örneğin, ses dosyalarından açıklamalı alt yazılar ve alt yazılar oluşturmak, toplantı notlarını özetlemek, çağrı merkezi aracılarına yardımcı olmak ve sesli mesajların dökümünü almak için LLM Konuşma'yı kullanın.

Özellik kullanılabilirliği

Bu tabloda, hızlı transkripsiyon API'sinin LLM Konuşma ile ve olmadan desteklediği transkripsiyon özellikleri gösterilmektedir:

Özelliği Hızlı transkripsiyon (varsayılan) LLM Konuşma (gelişmiş) MAI-transcribe
Transkripsiyon ✅ (Konuşma metinleştirme modelleri) ✅ (çok modüllü model) ✅ (çok modüllü model)
Çeviri ✅ (çok modüllü model)
Gündağılama
Kanal (stereo)
Küfür filtresi
Yerel ayarı belirtin 1
Özel yönlendirme
İfade listesi 1

1LLM Konuşma için, açık yerel ayar veya tümcecik listeleri kullanmak yerine çıkış stiline yol göstermek için istemi kullanın.

Desteklenen diller

Aşağıdaki giriş dilleri, hem transcribe hem de translate görevleri için desteklenir: Arabic, Chinese, Czech, Danish, German, English, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Italian, Japanese, Korean, Norwegian Bokmål, Dutch, Polish, Portuguese, Russian, Swedish, Thai, Turkish. Varsayılan olarak, hizmet çok dilli modda çalışır, bu nedenle giriş dili yerel ayarını belirtmeniz gerekmez. Desteklenen yerel ayarlar hakkında daha fazla bilgi için bkz. desteklenen diller.

LLM Konuşma'yı Microsoft Foundry üzerinde kod yazmadan deneyebilirsiniz.

Önkoşullar

LLM Konuşma'sı deneyin

  1. Oturum açın Microsoft Foundry. Yeni Dökümhane anahtarının açık olduğundan emin olun. Bu adımlar Foundry (yeni)'ye atıfta bulunur.

  2. Sağ üst menüden Derle'yi seçin.

  3. Sol bölmede Modeller'i seçin.

  4. AI Hizmetleri sekmesi, Dökümhane portalında kullanabileceğiniz Dökümhane modellerini gösterir. Azure Konuşma - Konuşmayı metne çevirme öğesini seçin.

  5. Açılan listede LLM konuşmasını seçin.

  6. İsteğe bağlı olarak , dili, küfür ilkesini ve diğer ayarları değiştirmek için Parametreler bölümünü kullanın. LLM için özel yönergeler de ekleyebilirsiniz.

  7. Ses dosyanızı seçmek için Dosyaları karşıya yükleme bölümünü kullanın. Ardından Başlat'ı seçin.

  8. Transkripsiyon çıkışını Transkript sekmesinde görüntüleyin. İsteğe bağlı olarak JSON sekmesinde ham API yanıt çıkışını görüntüleyin.

  9. Uygulamanızda LLM konuşmasını kullanmaya yönelik örnek kod almak için Kod sekmesine geçin.

Önkoşullar

  • LLM Konuşma API'sinin kullanılabildiği bölgelerden birinde Dökümhane Araçları'nda Azure Konuşma kaynağı. Desteklenen bölgelerin geçerli listesi için bkz . Konuşma hizmeti bölgeleri.

  • Beş saatten kısa ve boyutu 500 MB'tan az olan bir ses dosyası. Ses dosyası, toplu transkripsiyon API'sinin desteklediği biçimlerden ve codec'lerden birinde olmalıdır: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, WAV kapsayıcısında ALAW, WAV kapsayıcısında MULAW, AMR, WebM veya SPEEX. Desteklenen ses biçimleri hakkında daha fazla bilgi için bkz. Desteklenen ses biçimleri.

LLM Konuşma API'sini kullanma

Sonraki birkaç bölümde bu API'nin nasıl kullanılacağına ilişkin ayrıntılar sağlanır.

Ses yükle

Ses verilerini aşağıdaki yollarla sağlayabilirsiniz:

  • Satır içi ses verilerini aktarın.

      --form 'audio=@"YourAudioFile"'
    
  • Genel audioUrl bir kaynaktan ses dosyası yükleyin.

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

Ipucu

Uzun ses dosyaları için herkese açık bir URL'den karşıya yüklemenizi öneririz.

Bu makalede, örnek olarak satır içi ses yükleme özelliğini kullanacağız.

LLM Konuşma API'sini çağırma

POST isteğinizde transcriptions uç noktasına, ses dosyası ve istek gövdesi özellikleriyle birlikte multipart/form-data içerik türünü kullanın.

Aşağıdaki örnek, belirtilen yerel ayara göre bir ses dosyasının transkripsiyonunun nasıl yapılacağını göstermektedir. Ses dosyasının yerel ayarını biliyorsanız, transkripsiyon doğruluğunu geliştirmek ve gecikme süresini en aza indirmek için bunu belirtebilirsiniz.

  • Konuşma kaynak anahtarınızla YourSpeechResoureKey öğesini değiştirin.
  • Konuşma kaynak bölgenizle YourServiceRegion değerini değiştirin.
  • Değiştirin YourAudioFile ile ses dosyanızın yolunu.

Önemli

Microsoft Entra ID ile önerilen anahtarsız kimlik doğrulaması için --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' yerine --header "Authorization: Bearer YourAccessToken" yazın. Anahtarsız kimlik doğrulaması hakkında daha fazla bilgi için rol tabanlı erişim denetimi kılavuzuna bakın.

Bir sesin dökümünü almak için LLM Konuşma'sını kullanma

Yerel ayar kodu belirtmeden giriş dilinde ses dökümünü alabilirsiniz. Model, ses içeriğine göre uygun dili otomatik olarak algılar ve seçer.

curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.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"
  }
}'

Ses dosyasını çevirmek için LLM Konuşma kullanma

Sesi belirtilen hedef dile çevirebilirsiniz. Çeviriyi etkinleştirmek için istekte hedef dil kodunu sağlamanız gerekir.

curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.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"
  }
}'

aşağıdaki hedef diller, karşılık gelen dil kodu belirtilerek desteklenir targetLanguage :

Dil kodu Dil
de Almanca
en İngilizce
es İspanyolca
fr Fransızca
it İtalyanca
ko Kore dili
ja Japonca
pt Portekizce
zh Çince

Performansı değiştirmek için istem ayarlamayı kullanma

transcribe görevinin veya translate görevinin çıkış stilini yönlendirmek için isteğe bağlı bir metin sağlayabilirsiniz.

curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.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."]
  }
}'

istemler için en iyi yöntemlerden bazıları şunlardır:

  • İstemlerin uzunluğu en fazla 4.096 karakterdir.

  • İstemler tercihen İngilizce yazılmalıdır.

  • İstemler çıkış biçimlendirmeye yol gösterebilir. Varsayılan olarak, yanıtlar okunabilirlik için iyileştirilmiş bir görüntü biçimi kullanır. Sözcük temelli biçimlendirmeyi zorunlu kılmak için şunları ekleyin: Output must be in lexical format.

  • İstemler, belirli ifadelerin veya kısaltmaların belirginliğini artırarak tanınma olasılığını yükseltir. Kullanın: Pay attention to *phrase1*, *phrase2*, …. En iyi sonuçlar için, istem başına tümcecik sayısını sınırlayın.

  • Konuşma görevleriyle (örneğin, Tell me a story.) ilgili olmayan istemler genellikle göz ardı edilir.

Diğer yapılandırma seçenekleri

, ve diarizationgibi profanityFilterModegelişmiş özellikleri etkinleştirmek için ek yapılandırma seçeneklerini channels birleştirebilirsiniz.

curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.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"
}'

Bazı yapılandırma seçenekleri, locales ve phraseLists gibi, LLM Speech için gerekli değildir veya uygulanamaz. bu seçenekleri istekten atlayabilirsiniz. Hızlı transkripsiyon yapılandırma seçeneklerinden daha fazla bilgi edinin.

Örnek yanıt

JSON yanıtında, combinedPhrases özelliği tam transkripte edilmiş veya çevrilmiş metni içerir ve phrases özelliği segment düzeyi ve kelime düzeyi ayrıntıları içerir.

{
    "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
        }
    ]
}

Yanıt biçimi, hızlı transkripsiyon ve toplu transkripsiyon gibi var olan diğer konuşmayı metne dönüştürme çıkışlarıyla tutarlıdır. Aşağıdaki farklara dikkat edin:

  • durationMilliseconds görevi için Word düzeyinde offsetMilliseconds ve translate desteklenmez.

  • translate görevi için diarizasyon desteklenmez. Yalnızca etiket speaker1 döndürülür.

  • confidence kullanılamaz ve her zaman 0 olarak kalır.

Referans belgeleri | Paket (PyPi) | GitHub örnekleri

Önkoşullar

Microsoft Entra ID önkoşulları

Microsoft Entra ID ile önerilen anahtarsız kimlik doğrulaması için şunları yapmanız gerekir:

  • Microsoft Entra ID ile anahtarsız kimlik doğrulaması için kullanılan Azure CLI yükleyin.

  • Bilişsel Hizmetler Kullanıcı rolünü kullanıcı hesabınıza atayın. rolleri Azure portalında Access denetimi (IAM)>Add role assignment altında atayabilirsiniz.

Ortamı ayarlama

  1. adlı llm-speech-quickstart yeni bir klasör oluşturun ve aşağıdaki komutu kullanarak klasöre gidin:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. Bu makalede ihtiyacınız olan paketleri yüklemek için bir sanal Python ortamı oluşturun ve etkinleştirin. Python paketleri yüklerken her zaman bir sanal veya conda ortamı kullanmanızı öneririz. Aksi takdirde, Python genel yüklemenizi bozabilirsiniz. zaten Python 3.9 veya üzeri yüklüyse, aşağıdaki komutları kullanarak bir sanal ortam oluşturun:

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

    Python ortamını etkinleştirdiğinizde, komut satırından python veya pip çalıştırmak, uygulamanızın .venv klasöründeki Python yorumlayıcısını kullanır. Python sanal ortamından çıkmak için deactivate komutunu kullanın. Daha sonra gerektiğinde yeniden etkinleştirebilirsiniz.

  3. requirements.txtadlı bir dosya oluşturun. Dosyaya aşağıdaki paketleri ekleyin:

    azure-ai-transcription
    azure-identity
    
  4. Paketleri yükleyin:

    pip install -r requirements.txt
    

Ortam değişkenlerini ayarlama

Kimlik doğrulaması için kaynak uç noktanızı ve API anahtarınızı almanız gerekir.

  1. Foundry portalında (klasik) oturum açın.

  2. Soldaki menüden Yönetim merkezi'ni seçin.

  3. Bağlantılı kaynaklar öğesini seçin ve Microsoft Dökümhane kaynağınızı bulun (veya yoksa bağlantı ekleyin). Ardından API Anahtarı ve Hedef (uç nokta) değerlerini kopyalayın. Ortam değişkenlerini ayarlamak için bu değerleri kullanın.

  4. Aşağıdaki ortam değişkenlerini ayarlayın:

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

Not

Microsoft Entra ID kimlik doğrulaması için (üretim için önerilir), azure-identity yükleyin. kimlik doğrulamasını Microsoft Entra ID önkoşulları bölümünde açıklandığı gibi yapılandırın.

LLM Konuşma ile ses dökümü yapma

LLM Ses, büyük bir dil modeli tarafından geliştirilen transkripsiyonu etkinleştirmek için EnhancedModeProperties sınıfını kullanır. Model, sesinizdeki dili otomatik olarak algılar.

  1. Aşağıdaki kodla adlı llm_speech_transcribe.py bir dosya oluşturun:

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

    Daha fazla bilgi için şu başvurulara bakın: TranscriptionClient, TranscriptionContent, TranscriptionOptions ve EnhancedModeProperties.

  2. Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu. Hizmet WAV, MP3, FLAC, OGG ve diğer yaygın ses biçimlerini destekler.

  3. Python betiğini çalıştırın.

    python llm_speech_transcribe.py
    

Transkripsiyon çıktısı

Betik, transkripsiyon sonucunu konsola yazdırır:

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.

LLM Konuşma ile sesi çevirme

Sesi hedef dile çevirmek için LLM Konuşma özelliğini de kullanabilirsiniz. task değerini translate olarak ayarlayın ve target_language belirtin.

  1. Yukarıdaki kodu kullanın, ancak task olarak translate belirtin ve target_language içine EnhancedModeProperties ekleyin.

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

    Daha fazla bilgi için şu başvurulara bakın: TranscriptionClient ve EnhancedModeProperties.

  2. Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu.

  3. Python betiğini çalıştırın.

    python llm_speech_translate.py
    

Prompt-tuning'i kullan

Transkripsiyon veya çeviri görevleri için çıkış stiline kılavuzluk etmek için isteğe bağlı bir istem sağlayabilirsiniz. prompt değerini EnhancedModeProperties nesnesinde değiştirin.

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


İstemler için en iyi yöntemler

  • İstemlerin uzunluğu en fazla 4.096 karakterdir.

  • İstemler tercihen İngilizce yazılmalıdır.

  • Varsayılan görüntü biçimi yerine sözcük biçimlerini zorunlu kılmak için kullanın Output must be in lexical format. .

  • Belirli tümceciklerin veya kısaltmaların tanınmasını geliştirmek için kullanın Pay attention to *phrase1*, *phrase2*, … .

Daha fazla bilgi için şu başvuruya bakın: EnhancedModeProperties.

Çıkış

Betik, transkripsiyon sonucunu konsola yazdırır:

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.

Referans belgeleri | Paket (NuGet) | GitHub örnekleri

Önkoşullar

Microsoft Entra ID önkoşulları

Microsoft Entra ID ile önerilen anahtarsız kimlik doğrulaması için şunları yapmanız gerekir:

  • Microsoft Entra ID ile anahtarsız kimlik doğrulaması için kullanılan Azure CLI yükleyin.

  • az login çalıştırarak Azure CLI ile oturum açın.

  • Bilişsel Hizmetler Kullanıcı rolünü kullanıcı hesabınıza atayın. rolleri Azure portalında Access denetimi (IAM)>Add role assignment altında atayabilirsiniz.

Projeyi ayarlama

  1. .NET CLI ile yeni bir konsol uygulaması oluşturun:

    dotnet new console -n llm-speech-quickstart
    cd llm-speech-quickstart
    
  2. Gerekli paketleri yükleyin:

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

Kaynak bilgilerini alma

Kimlik doğrulaması için kaynak uç noktanızı almanız gerekir.

  1. Dökümhane portalında oturum açın.

  2. Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar'ın altında Konuşma veya çok hizmetli kaynağınızı seçin.

  3. Anahtarlar ve Uç Nokta'yı seçin.

  4. Uç nokta değerini kopyalayın ve ortam değişkeni olarak ayarlayın:

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

LLM konuşmasıyla ses dökümü yapma

LLM Ses, büyük bir dil modeli tarafından geliştirilen transkripsiyonu etkinleştirmek için EnhancedModeProperties sınıfını kullanır. Bir EnhancedModeProperties örnek oluşturduğunuzda, gelişmiş modu otomatik olarak etkinleştirirsiniz. Model, sesinizdeki dili otomatik olarak algılar.

öğesinin içeriğini Program.cs aşağıdaki kodla değiştirin:

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
foreach (var channel in response.Value.PhrasesByChannel)
{
    Console.WriteLine("\nDetailed phrases:");
    foreach (var phrase in channel.Phrases)
    {
        Console.WriteLine($"  [{phrase.Offset}] ({phrase.Locale}): {phrase.Text}");
    }
}

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu. Hizmet WAV, MP3, FLAC, OGG ve diğer yaygın ses biçimlerini destekler.

Uygulamayı çalıştırın:

dotnet run

Daha fazla bilgi için aşağıdaki başvurulara bakın: TranscriptionClient ve EnhancedModeProperties.

LLM Konuşma ile sesi çevirme

Sesi hedef dile çevirmek için LLM Konuşma özelliğini de kullanabilirsiniz. Task ve translate ayarlayın ve TargetLanguage belirtin.

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

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu.

Daha fazla bilgi için aşağıdaki başvuruya bakın: EnhancedModeProperties.

Prompt-tuning'i kullan

Transkripsiyon veya çeviri görevleri için çıkış stiline kılavuzluk etmek için isteğe bağlı bir istem sağlayabilirsiniz:

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

İstemler için en iyi yöntemler

  • İstemlerin uzunluğu en fazla 4.096 karakterdir.

  • İstemler tercihen İngilizce yazılmalıdır.

  • Varsayılan görüntü biçimi yerine sözcük biçimlerini zorunlu kılmak için kullanın Output must be in lexical format. .

  • Belirli tümceciklerin veya kısaltmaların tanınmasını geliştirmek için kullanın Pay attention to *phrase1*, *phrase2*, … .

Daha fazla bilgi için aşağıdaki başvuruya bakın: EnhancedModeProperties.

Kaynakları temizleme

Hızlı başlangıcı tamamladığınızda proje klasörünü silin:

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

Reference belgeleri | Paket (npm) | GitHub örnekleri

Önkoşullar

Microsoft Entra ID önkoşulları

Microsoft Entra ID ile önerilen anahtarsız kimlik doğrulaması için şunları yapmanız gerekir:

  1. Microsoft Entra ID ile anahtarsız kimlik doğrulaması için kullanılan Azure CLI yükleyin.

  2. az login çalıştırarak Azure CLI ile oturum açın.

  3. Bilişsel Hizmetler Kullanıcı rolünü kullanıcı hesabınıza atayın. rolleri Azure portalında Access denetimi (IAM)>Add role assignment altında atayabilirsiniz.

Projeyi ayarlama

  1. adlı llm-speech-quickstartyeni bir klasör oluşturun ve klasörüne gidin:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. bir Node.js projesi başlatın ve gerekli paketleri yükleyin:

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

Kaynak bilgilerini alma

Kimlik doğrulaması için kaynak uç noktanızı almanız gerekir.

  1. Foundry portalında oturum açın.

  2. Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar'ın altında Konuşma veya çok hizmetli kaynağınızı seçin.

  3. Anahtarlar ve Uç Nokta'yı seçin.

  4. Uç nokta değerini kopyalayın ve ortam değişkeni olarak ayarlayın:

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

LLM Konuşma ile ses dökümü yapma

LLM Konuşma, enhancedMode seçeneği büyük bir dil modeli tarafından geliştirilmiş transkripsiyonu etkinleştirmek için kullanır. Model, sesinizdeki dili otomatik olarak algılar.

Aşağıdaki kodla adlı index.js bir dosya oluşturun:

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

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu. Hizmet WAV, MP3, FLAC, OGG ve diğer yaygın ses biçimlerini destekler.

Uygulamayı çalıştırın:

node index.js

Ipucu

sonucunu Enhanced mode is currently not supported yetalırsanız, uç noktanızın LLM Konuşma özelliğini destekleyen bir bölgede olduğunu doğrulayın.

Daha fazla bilgi için aşağıdaki başvuruya bakın: TranscriptionClient.

Transkripsiyon çıktısı

Uygulama transkripsiyon sonucunu konsola yazdırır:

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.

LLM Konuşma ile sesi çevirme

Sesi hedef dile çevirmek için LLM Konuşma özelliğini de kullanabilirsiniz. task öğesini translate olarak ayarlayın ve ardından targetLanguage öğesini belirtin:

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

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu.

Daha fazla bilgi için aşağıdaki başvuruya bakın: TranscriptionClient.

Prompt-tuning'i kullan

Transkripsiyon veya çeviri görevleri için çıkış stiline kılavuzluk etmek için isteğe bağlı bir istem sağlayabilirsiniz:

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

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

İstemler için en iyi yöntemler

  • İstemlerin uzunluğu en fazla 4.096 karakterdir.

  • İstemler tercihen İngilizce yazılmalıdır.

  • Varsayılan görüntü biçimi yerine sözcük biçimlerini zorunlu kılmak için kullanın Output must be in lexical format. .

  • Belirli tümceciklerin veya kısaltmaların tanınmasını geliştirmek için kullanın Pay attention to *phrase1*, *phrase2*, … .

Çıkış

Uygulama transkripsiyon sonucunu konsola yazdırır:

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

Daha fazla bilgi için aşağıdaki başvuruya bakın: TranscriptionClient.

Reference belgeleri | Package (Maven) | GitHub örnekleri

Önkoşullar

Ortamı ayarlama

  1. adlı llm-speech-quickstartyeni bir klasör oluşturun ve bu klasöre gidin:

    mkdir llm-speech-quickstart && cd llm-speech-quickstart
    
  2. Proje dizininizin kökünde aşağıdaki içeriğe sahip bir pom.xml dosya oluşturun:

    <?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-beta.2</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>
    

    Not

    <sourceDirectory>.</sourceDirectory> yapılandırması Maven'e varsayılan src/main/java yapısı yerine geçerli dizinde Java kaynak dosyaları aramasını söyler. Bu yapılandırma değişikliği daha basit ve daha düz bir proje yapısı sağlar.

  3. Bağımlılıkları yükleyin:

    mvn clean install
    

Ortam değişkenlerini ayarlama

Azure Konuşma'ya erişmek için uygulamanızın kimliği doğrulanmalıdır. SDK hem API anahtarını hem de Microsoft Entra ID kimlik doğrulamasını destekler. Ayarladığınız ortam değişkenlerine göre hangi yöntemi kullanacağınızı otomatik olarak algılar.

İlk olarak Konuşma kaynağınızın uç noktasını ayarlayın. Gerçek kaynak adınızı <your-speech-endpoint> ile değiştirin.

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

Ardından aşağıdaki kimlik doğrulama yöntemlerinden birini seçin.

API anahtarı ortam değişkenini ayarlayın:

setx AZURE_SPEECH_API_KEY <your-speech-key>

ayarı AZURE_SPEECH_API_KEYyerine, aşağıdaki kimlik bilgisi kaynaklarından birini yapılandırın:

  • Azure CLI: Geliştirme makinenizde az login çalıştırın.

  • Yönetilen kimlik: Azure(Azure App Service, Azure İşlevleri, sanal makineler) içinde çalışan uygulamalar için.

  • Ortam değişkenleri: , AZURE_TENANT_IDve AZURE_CLIENT_IDdeğerlerini ayarlayınAZURE_CLIENT_SECRET.

  • Visual Studio Code veya IntelliJ: IDE'niz aracılığıyla oturum açın.

Bilişsel Hizmetler Kullanıcı rolünü de kimliğinize atamanız gerekir:

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>

Not

Windows ortam değişkenlerini ayarladıktan sonra, konsol penceresi de dahil olmak üzere bunları okuması gereken tüm çalışan programları yeniden başlatın. Linux veya macOS'ta, değişiklikleri etkili hale getirmek için komutunu (veya eşdeğer kabuk yapılandırma dosyanızı) çalıştırın source ~/.bashrc .

LLM Konuşma ile ses dökümü yapma

LLM Ses, büyük bir dil modeli tarafından geliştirilen transkripsiyonu etkinleştirmek için EnhancedModeOptions sınıfını kullanır. Bir EnhancedModeOptions örnek oluşturduğunuzda, gelişmiş modu otomatik olarak etkinleştirirsiniz. Model, sesinizdeki dili otomatik olarak algılar.

Proje dizininizde aşağıdaki kodla adlı LlmSpeechQuickstart.java bir dosya oluşturun:

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

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu. Hizmet WAV, MP3, FLAC, OGG ve diğer yaygın ses biçimlerini destekler.

Uygulamayı çalıştırma

Maven kullanarak uygulamayı çalıştırın:

mvn compile exec:java

LLM Konuşma'sı kullanarak sesi çevirme

Sesi hedef dile çevirmek için LLM Konuşma özelliğini de kullanabilirsiniz. EnhancedModeOptions Görevi translateolarak ayarlamak için yapılandırmayı değiştirin ve hedef dili belirtin.

Aşağıdaki kodla adlı LlmSpeechTranslate.java bir dosya oluşturun:

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

Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu.

Çeviri örneğini çalıştırmak için ana sınıf yapılandırmasını güncelleştirin pom.xml veya çalıştırın:

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

Prompt-tuning'i kullan

Transkripsiyon veya çeviri görevleri için çıkış stiline kılavuzluk etmek için isteğe bağlı bir istem sağlayabilirsiniz.

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

İstemler için en iyi yöntemler

  • İstemlerin uzunluğu en fazla 4.096 karakterdir.

  • İstemler tercihen İngilizce yazılmalıdır.

  • Varsayılan görüntü biçimi yerine sözcük biçimlerini zorunlu kılmak için kullanın Output must be in lexical format. .

  • Belirli tümceciklerin veya kısaltmaların tanınmasını geliştirmek için kullanın Pay attention to *phrase1*, *phrase2*, … .

Kaynakları temizleme

Hızlı başlangıcı tamamladığınızda proje klasörünü silin:

rm -rf llm-speech-quickstart

Transkripsiyon hatası işleme

Hızlı transkripsiyon API'sini çağırdığınızda, geçici hataları ve hız sınırlamayı işlemek için yeniden deneme mantığını uygulayın. API hız sınırlarını zorunlu tutar ve bu da yüksek eşzamanlılık işlemleri sırasında hataya neden olabilir.

  • Geçici hatalarda en fazla beş kez yeniden deneyin.

  • Üstel geri alma kullan: 2 saniye, 4 sn, 8 sn, 16 sn, 32 sn.

  • Toplam geri çekilme süresi: 62 sn.

Bu yapılandırma, özellikle birden çok eşzamanlı çalışanla toplu işlem çalıştırdığınızda hız sınırlama pencereleri sırasında API'nin kurtarılması için yeterli zaman sağlar.

Yeniden deneme mantığı ne zaman kullanılır?

Aşağıdaki hata kategorileri için yeniden deneme mantığını uygulayın:

  • HTTP hataları - Yeniden deneyin:

    • HTTP 429 (hız sınırı)
    • HTTP 500, 502, 503, 504 (sunucu hataları)
    • status_code=None (tamamlanmamış yanıt indirmeleri)
  • Azure SDK ağ hataları - Yeniden deneyin:

    • ServiceRequestError
    • ServiceResponseError

    Bu hatalar, urllib3.exceptions.ReadTimeoutError gibi alt düzey ağ istisnalarını, bağlantı sıfırlamaları ve TLS hataları dahil olmak üzere kapsar.

  • Python ağ özel durumları - Yeniden deneyin:

    • ConnectionError
    • TimeoutError
    • OSError

Düzeltme gerektiren istemci tarafı sorunları gösterdiğinden aşağıdaki hataları yeniden denemeyin:

  • HTTP 400 (hatalı istek)
  • HTTP 401 (yetkisiz)
  • HTTP 422 (işlenemeyen varlık)
  • Diğer istemci hataları (4xx durum kodları)

Uygulama notları

  • Her yeniden deneme denemesi öncesinde ses dosyası akışını (seek(0)) sıfırlayın.

  • Eşzamanlı çalışanları kullandığınızda, ağır hız sınırlaması altında varsayılan HTTP okuma zaman aşımı (300 saniye) aşılabilir.

  • API bir isteği kabul edebilir ancak yanıt oluşturulurken zaman aşımına uğrayabilir. Bu koşul, standart http hatası yerine SDK sarmalanmış ağ hatası olarak görünebilir.