Aracılığıyla paylaş


Döküm Araçları'nda Azure Konuşma ile hızlı transkripsiyon API'sini kullanma

Hızlı transkripsiyon API'si, ses dosyalarını zamana uyumlu şekilde ve gerçek zamandan daha hızlı bir şekilde dökümlemek için kullanılır, böylece sonuçlar hızlıca döndürülür. Aşağıdakiler gibi öngörülebilir gecikme süresiyle ses kaydının transkriptine ihtiyacınız olan senaryolarda hızlı transkripsiyonu kullanın:

  • Hızlı ses veya video transkripsiyonu, alt yazılar ve düzenleme.
  • Toplantı notları
  • Sesli mesaj

Toplu transkripsiyon API'sinden farklı olarak, hızlı transkripsiyon API'si yalnızca görüntü (sözcük temelli değil) biçiminde transkripsiyonlar üretir. Görüntüleme formu, noktalama işaretleri ve büyük harf kullanımı içeren transkripsiyonun daha insan tarafından okunabilen bir biçimidir.

İpucu

LLM destekli en son konuşma transkripsiyonu ve konuşma çevirisini LLM konuşmasıyla da kullanabilirsiniz.

Özellik kullanılabilirliği

Bu tabloda, LLM konuşmasıyla ve konuşma olmadan (gelişmiş mod) hızlı transkripsiyon API'sinin hangi transkripsiyon özelliklerinin desteklendiği gösterilir.

Özellik Hızlı Transkripsiyon (varsayılan) LLM Konuşma (gelişmiş)
Transkripsiyon ✅ (transkripsiyon Konuşma modelleri) ✅ (çok modüllü model)
Çeviri ✅ (çok modüllü model)
Gündağılama
Kanal (stereo)
Küfür filtresi
Yerel ayarı belirtin ❌ (uygulamak için istem kullanın)
Özel istem
Cümle listesi ❌ (uygulamak için istem kullanın)

LLM konuşma (gelişmiş mod) için, açık yerel ayar veya tümcecik listeleri kullanmak yerine çıkış stilini yönlendirmek için istemi kullanın.

Microsoft Foundry içinde kod yazmadan hızlı transkripsiyonu deneyebilirsiniz.

Önkoşullar

Hızlı transkripsiyonu deneyin

  1. Microsoft Foundry'da oturum açın. Yeni Dökümhane anahtarının açık olduğundan emin olun. Bu adımlar Foundry (yeni) ile ilgilidir.
  2. Sağ üst menüden Derle'yi seçin.
  3. Sol bölmede Modeller'i seçin.
  4. AI Hizmetleri sekmesi, Foundry portalında kutudan çıktığı gibi kullanılabilecek Foundry modellerini gösterir. Azure Konuşma - Konuşmayı Metne Dönüştürme oyun alanını açmak için seçin.
  5. Üstteki açılan listede Hızlı transkripsiyon'a tıklayın.
  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.
  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 hızlı transkripsiyon kullanmaya yönelik örnek kod almak için Kod sekmesine geçin.

Önkoşullar

  • Hızlı transkripsiyon API'sinin kullanılabildiği bölgelerden birinde Azure Konuşma kaynağı. Desteklenen bölgelerin geçerli listesi için Konuşma hizmeti bölgeleri tablosuna bakın.

  • Toplu transkripsiyon API'sinin desteklediği biçim ve codec'lerden birinde bir ses dosyası (5 saatten kısa ve boyutu 500 MB'tan az) : WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, WAV kapsayıcısında ALAW, WAV kapsayıcısında MULAW, AMR, WebM ve SPEEX. Desteklenen ses biçimleri hakkında daha fazla bilgi için bkz . Desteklenen ses biçimleri.

Sesi yükle

Hızlı transkripsiyona ses verilerini aşağıdaki yollarla sağlayabilirsiniz:

  • İçerik içi ses yükleme
--form 'audio=@"YourAudioFile"'
  • Herkese Açık URL'den Ses
--form 'definition="{"audioUrl": "https://crbn.us/hello.wav"}"'

İpucu

Uzun ses dosyaları için bir genel URL'den yükleme yapmanız tavsiye edilir.

Aşağıdaki bölümlerde, örnek olarak satır içi ses yükleme kullanılmıştır.

Hızlı transkripsiyon API'sini kullanma

İpucu

Microsoft Foundry portalında hızlı transkripsiyonu deneyin.

Aşağıdaki senaryolarla hızlı transkripsiyon API'sini ( Transkripsiyonlar - Transkripsiyon aracılığıyla) kullanmayı öğreniriz:

  • Belirtilen yerel ayar: Belirtilen yerel ayara sahip bir ses dosyasını transkribe etme. 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.
  • Dil belirleme açıkken: Dil belirleme özelliği açıkken bir ses dosyasını dök. Ses dosyasının yerel ayarından emin değilseniz, Konuşma hizmetinin yerel ayarı (ses başına bir yerel ayar) tanımlamasına izin vermek için dil belirlemeyi açabilirsiniz.
  • Çok dilli transkripsiyon: En son çok dilli konuşma transkripsiyonu modeliyle bir ses dosyasının dökümünü alma. Sesinizde sürekli ve doğru şekilde dökümünü almak istediğiniz çok dilli içerikler varsa, yerel ayar kodlarını belirtmeden en son çok dilli konuşma transkripsiyonu modelini kullanabilirsiniz.
  • Diarization açık: Diarization açıkken bir ses dosyasını transkribe et. Diarizasyon, konuşmadaki farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınan konuşmanın belirli bir bölümünü hangi konuşmacının konuştuğunu hakkında bilgi sağlar.
  • Çoklu kanal etkin: Bir veya iki kanallı ses dosyasını yazıya dönüştürme. Çok kanallı transkripsiyonlar, birden çok hoparlöre sahip ses dosyaları veya arka plan gürültüsü olan ses dosyaları gibi birden çok kanallı ses dosyaları için kullanışlıdır. Varsayılan olarak, hızlı transkripsiyon API'si tüm giriş kanallarını tek bir kanalda birleştirir ve ardından transkripsiyonu gerçekleştirir. Bu istenmiyorsa, kanallar birleştirilmeden bağımsız bir şekilde transkribe edilebilir.

Ses dosyasını ve istek gövdesi özelliklerini içeren çok parçalı/form-veri POST isteğini transcriptions uç noktasına gönderin.

Aşağıdaki örnek, belirtilen yerel ayara sahip bir ses dosyasının nasıl transkribe edileceğini 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.

  • Yerine YourSpeechResourceKey konuşma kaynak anahtarınızı yazın.
  • YourServiceRegion ile Konuşma kaynak bölgenizi değiştirin.
  • YourAudioFile ile ses dosyanızın yolunu değiştirin.

Önemli

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

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"' \
--form 'definition="{
    "locales":["en-US"]}"'

Form tanımını aşağıdaki yönergelere göre oluşturun:

  • Ses verilerinin beklenen yerel dil ayarına eşleşmesi gereken isteğe bağlı (ancak önerilen) locales özelliğini transkript oluşturmak için ayarlayın. Bu örnekte, yerel ayar olarak en-USayarlanır. Desteklenen yerel ayarlar hakkında daha fazla bilgi için bkz. Desteklenen metin dillerine konuşma.

Hızlı transkripsiyon API'sinin ve diğer özellikleri hakkında locales daha fazla bilgi için bu kılavuzun devamında yer alan istek yapılandırma seçenekleri bölümüne bakın.

Yanıt durationMilliseconds, offsetMilliseconds ve daha fazlasını içerir. Bu combinedPhrases özelliği, tüm konuşmacılar için tam transkripsiyonları içerir.

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

Not

Konuşma hizmeti esnek bir hizmettir. 429 hata kodu (çok fazla istek) alırsanız, otomatik ölçeklendirme sırasında kısıtlamayı azaltmak için lütfen en iyi yöntemleri izleyin.

yapılandırma seçenekleri isteme

Transkripsiyonlar - Transkripsiyon işlemini çağırdığınızda transkripsiyonu yapılandırmak için bazı özellik seçenekleri aşağıdadır.

Mülk Açıklama Gerekli veya isteğe bağlı
channels Ayrı ayrı döküm yapılacak kanalların sıfır tabanlı dizinlerinin listesi. Ayrıştırma etkinleştirilmediği sürece en fazla iki kanal desteklenir. Varsayılan olarak, hızlı transkripsiyon API'si tüm giriş kanallarını tek bir kanalda birleştirir ve ardından transkripsiyonu gerçekleştirir. Bu istenmiyorsa, kanallar birleştirilmeden bağımsız bir şekilde transkribe edilebilir.

Bir stereo ses dosyasından ayrı olarak kanalların dökümünü almak istiyorsanız , [0,1]veya [0]belirtmeniz [1]gerekir. Aksi takdirde, stereo ses mono olarak birleştirilir ve yalnızca tek bir kanal yazıya dökülür.

Ses stereo ise ve darizasyon etkinse, channels özelliğini [0,1] olarak ayarlayamazsınız. Konuşma hizmeti, birden çok kanalın konuşmacı ayırımını desteklemez.

Mono ses için channels özelliği yoksayılır ve ses her zaman tek bir kanal olarak dönüştürülür.
İsteğe bağlı
diarization Diarizasyon yapılandırması. Diyarizasyon, tek bir ses kanalında birden çok konuşmacıyı tanıma ve ayırma işlemidir. Örneğin, belirtin "diarization": {"maxSpeakers": 2, "enabled": true}. Daha sonra transkripsiyon dosyası, her bir döküm tümceciği için speaker (örneğin "speaker": 0 veya "speaker": 1) girdileri içerir. İsteğe bağlı
locales Döküm için ses verilerinin beklenen yerel ayarıyla eşleşmesi gereken yerel ayarlar listesi.

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. Tek bir yerel ayar belirtilirse, bu yerel ayar transkripsiyon için kullanılır.

Ancak yerel ayardan emin değilseniz, dil tanımlamasını kullanmak için birden çok yerel ayar belirtebilirsiniz. Aday yerel ayarların daha kesin bir listesiyle dil tespiti daha doğru olabilir.

Herhangi bir yerel ayar bilgisi belirtmezseniz, Konuşma hizmeti yerel ayarı tanımlamak ve sürekli olarak yazıya dökmek için en son çok dilli bir modeli kullanır.

Desteklenen en son dilleri Transkripsiyonlar - Desteklenen Yerel Ayarlar Listesi REST API'sini (API sürüm 2024-11-15 veya üzeri) kullanarak alabilirsiniz. Yerel ayarlar hakkında daha fazla bilgi için Konuşma hizmeti dil desteği belgelerine bakın.
İsteğe bağlı ancak beklenen bölgeyi biliyorsanız önerilir.
phraseList Tümcecik listesi, tanımalarını geliştirmeye yardımcı olmak için önceden sağlanan sözcüklerin veya tümceciklerin listesidir. Bir ifade listesine ifade eklemek önemini artırıp, dolayısıyla tanınma olasılığını artırır. Örneğin, belirtin phraseList":{"phrases":["Contoso","Jessie","Rehaan"]}. "Öbek Listesi, API sürüm 2025-10-15 ile desteklenmektedir." Daha fazla bilgi için bkz. Tümcecik listesiyle tanıma doğruluğunu geliştirme. İsteğe bağlı
profanityFilterMode Tanıma sonuçlarında küfürlerin nasıl işleneceğini belirtir. Kabul edilen değerler None küfür filtrelemeyi devre dışı bırakmak, Masked küfürleri yıldız işaretiyle değiştirmek, Removed sonuçtan tüm küfürleri kaldırmak veya Tags küfür etiketleri eklemektir. Varsayılan değer şudur: Masked. İsteğe bağlı

Dokümantasyon | 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.
  • Rolü kullanıcı hesabınıza atayın Cognitive Services User . rolleri Azure portalında Access denetimi (IAM)>Add role assignment altında atayabilirsiniz.

Kurulum

  1. adlı transcription-quickstart yeni bir klasör oluşturun ve aşağıdaki komutu kullanarak hızlı başlangıç klasörüne gidin:

    mkdir transcription-quickstart && cd transcription-quickstart
    
  2. Bu öğretici için 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. 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
    

Kaynak bilgilerini alma

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

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

  2. Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar bölümünde, Konuşma veya çoklu hizmet kaynağınızı seçin.

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

  4. Uç Nokta ve Anahtar değerlerini kopyalayın. Ortam değişkenlerini ayarlamak için bu değerleri kullanın.

  5. 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 ve Microsoft Entra ID önkoşulları bölümünde açıklandığı gibi kimlik doğrulamasını yapılandırın.

Kod

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

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

    Başvuru: TranscriptionClient | TranscriptionContent | TranscriptionOptions | AzureKeyCredential

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

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

    python transcribe_audio_file.py
    

Çıktı

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 1, 2, 3, are spoken clearly. Let's see how well this voice captures tone, timing, and natural rhythm. This audio is provided by samplefiles.com.

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

yapılandırma seçenekleri isteme

Transkripsiyon davranışını özelleştirmek için kullanın TranscriptionOptions . Aşağıdaki bölümlerde desteklenen her yapılandırma açıklanmaktadır ve nasıl uygulanacağı gösterilmektedir.

Çok dilli algılama

Dil tanımlamayı diller arasında etkinleştirmek için locales birden çok yerel ayar adayı iletin. Hizmet, konuşulan dili algılar ve algılanan yerel ayar ile her tümceciği etiketler. Hizmetin aday listesi olmadan tüm dilleri otomatik olarak algılamasına izin vermek için locales'u tamamen çıkartın.

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

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

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

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

Başvuru: TranscriptionOptions

Konuşmacı günlüğü

Konuşmacı ayırımı, tek bir ses kanalındaki farklı konuşmacıları algılar ve etiketler. Beklenen en fazla sayıda hoparlöre (2-35) sahip bir TranscriptionDiarizationOptions nesne oluşturun ve bunu öğesine TranscriptionOptionsgeçirin. Sonuçtaki her tümcecik bir speaker tanımlayıcı içerir.

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

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

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

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

Not

Kesinleştirme yalnızca tek kanallı (mono) seste desteklenir. Sesiniz stereo ise diarizasyon etkinleştirildiğinde channels özelliğini [0, 1] olarak ayarlamayın.

Başvuru: TranscriptionDiarizationOptions, TranscriptionOptions

Cümle listesi

Tümcecik listesi, etki alanına özgü terimler, düzgün adlar ve yaygın olmayan sözcükler için tanıma doğruluğunu artırır. biasing_weight ile 1.0 ve 20.0 arasında ayarlayın, ifadelerin ne kadar güçlü bir şekilde tercih edildiğini kontrol etmek için (daha yüksek değerler sapmayı artırır).

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

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

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

    print(result.combined_phrases[0].text)

Daha fazla bilgi için bkz. Tümcecik listesiyle tanıma doğruluğunu geliştirme.

Başvuru: PhraseListProperties, TranscriptionOptions

Küfür filtresi

profanity_filter_mode parametresini kullanarak transkripsiyon çıkışında küfürlerin nasıl görüneceğini denetleyin. Aşağıdaki modlar kullanılabilir:

Modu Davranış
"None" Küfür değişmeden geçer.
"Masked" Küfür, yıldız işareti (varsayılan) ile değiştirilir.
"Removed" Çıktıdaki küfür tamamen kaldırılır.
"Tags" Küfür XML etiketlerine <profanity> sarmalanır.
from azure.core.credentials import AzureKeyCredential
from azure.ai.transcription import TranscriptionClient
from azure.ai.transcription.models import TranscriptionContent, TranscriptionOptions

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

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

    print(result.combined_phrases[0].text)

Başvuru: TranscriptionOptions

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.
  • Rolü kullanıcı hesabınıza atayın Cognitive Services User . 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 transcription-quickstart
    cd transcription-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. Foundry portalında oturum açın.

  2. Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar bölümünde, Konuşma veya çoklu hizmet 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>"
    

Ses dökümü yapma

Program.cs içeriğini 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);

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

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

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

dotnet run

Ses dosyanızdaki dökümü alınmış metin konsola yazdırılır.

Sözcük düzeyi ayrıntılarına erişme

Zaman damgalarına, güvenilirlik puanlarına ve tek tek sözcüklere erişmek için tümcecikleri yineleyin:

var channelPhrases = response.Value.PhrasesByChannel.First();

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

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

Başvuru: TranscribedPhrase, TranscribedWord

Konuşmacıları diarizasyon ile tanımlayın

Konuşmacı diarizasyonu, çok hoparlörlü seste kimlerin konuştuğunu tanımlar:

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

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

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

Başvuru: TranscriptionDiarizationOptions

Referans 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:

  • 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.
  • Rolü kullanıcı hesabınıza atayın Cognitive Services User . rolleri Azure portalında Access denetimi (IAM)>Add role assignment altında atayabilirsiniz.

Projeyi ayarlama

  1. Yeni bir klasör oluşturun ve bir Node.js projesi başlatın:

    mkdir transcription-quickstart
    cd transcription-quickstart
    npm init -y
    
  2. Gerekli paketleri yükleyin:

    npm install @azure/ai-speech-transcription @azure/identity
    
  3. modülü türünü cihazınıza package.jsonekleyerek projeyi ES modüllerini kullanacak şekilde yapılandırın:

    npm pkg set type=module
    

    Veya "type": "module"'yı package.json dosyanıza el ile ekleyin. Bu, örnek koddaki import deyimlerin çalışması için gereklidir.

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 bölümünde, Konuşma veya çoklu hizmet 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>"
    

Ses dökümü yapma

  1. Aşağıdaki kodla adlı transcribe-audio-file.js bir dosya oluşturun:

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

    Referans: TranscriptionClient | DefaultAzureCredential

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

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

    node transcribe-audio-file.js
    

Çıktı

Uygulama, dökümü alınmış metni konsola yazdırır:

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

Genel istek seçenekleri

Konuşmacıları diarizasyon ile tanımlayın

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

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

Referans: TranscriptionDiarizationOptions

Küfür filtrelemeyi ayarlama

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

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

Başvuru: KnownProfanityFilterModes

İfade listesi ekleme

Etki alanına özgü terimler, düzgün adlar ve kısaltmalar için tanımayı geliştirmek için tümcecik listesi kullanın:

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

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

Başvuru: PhraseListProperties

Çok dilli algılamayı etkinleştirme

Hangi dilin konuşulduğundan emin değilseniz, birden fazla bölgesel ayar seçeneği geçin. Hizmet dili algılar ve tümcecik başına yerel ayar döndürür:

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

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

Başvuru: TranscribedPhrase

Reference belgeleri | Package (Maven) | GitHub Örnekler

Önkoşullar

Ortamı ayarlama

  1. adlı transcription-quickstart yeni bir klasör oluşturun ve klasörüne gidin:

    mkdir transcription-quickstart && cd transcription-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 bir düz proje yapısı sağlar.

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

    mvn clean install
    

Ortam değişkenlerini belirleme

Konuşma hizmetine erişmek için uygulamanızın kimliğinin doğrulanması gerekir. 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. <your-speech-endpoint> ifadesini gerçek kaynak adınızla 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:

$env: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(App Service, Azure İşlevleri, VM'ler) içinde çalışan uygulamalar için.
  • Ortam Değişkenleri: , AZURE_TENANT_IDve AZURE_CLIENT_IDayarlayı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 .

Uygulamayı oluşturma

Proje dizininizde aşağıdaki kodla adlı TranscriptionQuickstart.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.TranscriptionOptions;
import com.azure.ai.speech.transcription.models.TranscriptionResult;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.identity.DefaultAzureCredentialBuilder;

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

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

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

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

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

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

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

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

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

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

Uygulamayı çalıştırma

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

mvn compile exec:java

yapılandırma seçenekleri isteme

Transkripsiyon davranışını özelleştirmek için kullanın TranscriptionOptions . Aşağıdaki bölümlerde desteklenen her yapılandırma açıklanmaktadır ve nasıl uygulanacağı gösterilmektedir.

Çok dilli algılama

Yerel ayar belirtmediğinizde, hizmet seste bulunan tüm dilleri otomatik olarak algılar ve bu dillerin dökümünü alır. Döndürülen her tümcecik, algılanan dili tanımlayan bir locale alan içerir.

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

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

Not

Hiçbir yerel ayar belirtilmediğinde, locale tek tek tümceciklerdeki alan her zaman söz konusu tümceciğin tam dilini doğru yansıtmayabilir. En yüksek doğruluğu sağlamak için, bildiğinizde beklenen bölgesel ayarı belirtin.

Başvuru: TranscriptionOptions, TranscribedPhrase.getLocale()

Konuşmacı günlüğü

Konuşmacı ayırımı, tek bir ses kanalındaki farklı konuşmacıları algılar ve etiketler. Bunu etkinleştirmek ve beklenen maksimum hoparlör sayısını (2-36) ayarlamak için kullanın TranscriptionDiarizationOptions . Sonuçtaki her tümcecik bir speaker tanımlayıcı içerir.

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

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

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

TranscriptionResult result = client.transcribe(options);

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

Not

Kesinleştirme yalnızca tek kanallı (mono) seste desteklenir. Sesiniz stereo ise diarizasyon etkinleştirildiğinde channels özelliğini [0,1] olarak ayarlamayın.

Başvuru: TranscriptionDiarizationOptions, TranscriptionOptions.setDiarizationOptions(), TranscribedPhrase.getSpeaker()

Cümle listesi

Tümcecik listesi, etki alanına özgü terimler, düzgün adlar ve yaygın olmayan sözcükler için tanıma doğruluğunu artırır. Eklediğiniz tümceler, tanıyıcı tarafından daha fazla önem verilerek, doğru bir şekilde yazılma olasılığını artırır.

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

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

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

TranscriptionResult result = client.transcribe(options);

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

Daha fazla bilgi için bkz. Tümcecik listesiyle tanıma doğruluğunu geliştirme.

Başvuru: PhraseListOptions, TranscriptionOptions.setPhraseListOptions()

Küfür filtresi

kullanarak ProfanityFilterModetranskripsiyon çıkışında küfürlerin nasıl görüneceğini denetleyin. Aşağıdaki modlar kullanılabilir:

Modu Davranış
NONE Küfür değişmeden geçer.
MASKED Küfür, yıldız işareti (varsayılan) ile değiştirilir.
REMOVED Çıktıdaki küfür tamamen kaldırılır.
TAGS Küfür XML etiketleriyle sarılmıştır.
import com.azure.ai.speech.transcription.models.ProfanityFilterMode;

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

TranscriptionResult result = client.transcribe(options);

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

Başvuru: ProfanityFilterMode, TranscriptionOptions.setProfanityFilterMode()

Kaynakları temizle

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

rm -rf transcription-quickstart

Transkripsiyon hatası işleme

Üstel geri alma ile yeniden deneme mantığını uygulama

Hızlı transkripsiyon API'sini çağırırken, 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 HTTP 429 yanıtlarına neden olabilir.

  • Geçici hatalarda en fazla 5 kez yeniden deneyin.
  • Üstel geri alma kullanın: 2s, 4s, 8s, 16s, 32s.
  • Toplam geri çekilme süresi: 62 saniye.

Bu yapılandırma, özellikle birden çok eşzamanlı çalışanla toplu işlem çalıştırırken hız sınırlama pencereleri sırasında API'nin kurtarılması için yeterli süre 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 yüklemeleri)
  • Azure SDK ağ hataları - Yeniden deneyin:
    • ServiceRequestError
    • ServiceResponseError Bu hatalar , bağlantı sıfırlamaları ve TLS hataları gibi urllib3.exceptions.ReadTimeoutErroralt düzey ağ özel durumlarını sarmalar.
  • Python ağ özel durumları - Yeniden deneyin:
    • ConnectionError
    • TimeoutError
    • OSError

Düzeltme gerektiren istemci tarafı sorunlarını 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ı kullanırken, varsayılan HTTP okuma zaman aşımının (300 saniye) ağır hız sınırlaması altında aşılmış olabileceğini unutmayın.
  • API'nin bir isteği kabul edebileceğini, ancak yanıt oluşturulurken zaman aşımına uğrayabileceğini ve bunun standart bir HTTP hatası yerine SDK ile sarmalanmış bir ağ hatası olarak görünebileceğini unutmayın.