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

Hızlı transkripsiyon API'si, ses dosyalarını senkronize bir şekilde ve gerçek zamandan daha hızlı biçimde dökümlemek ve sonuçları hızlıca elde etmek için kullanı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.

Ipucu

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

Ö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
Yazılı Metne Dönüştürme ✅ (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.

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

Önkoşullar

Hızlı transkripsiyonu deneyin

  1. Microsoft Foundry oturumunuzu açın. Yeni Dökümhane seçeneğinin açık olduğundan emin olun. Bu adımlar Foundry (yeni) için geçerlidir.
  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 kullanıma sunulan Dökümhane modellerini gösterir. Konuşmayı Metne Dönüştürme oyun alanı açmak için Azure Konuşma - Metne konuşma öğesini 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.

Ses yükle

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

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

Ipucu

Uzun ses dosyaları için herkese açık bir URL üzerinden yükleme önerilir.

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

Ipucu

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ı yazıya dökme. 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 tanıma açıkken bir ses dosyasının dökümünü alma. 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 on: Diarization açıkken bir ses dosyasının dökümü. 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 açık: Bir veya iki kanalı olan bir ses dosyasının dökümünü alma. Ç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. İstenmiyorsa, kanallar birleştirilmeden bağımsız olarak dökümleri alınabilir.

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

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ız ile YourSpeechResourceKey değerini değiştirin.
  • YourServiceRegion ile Konuşma kaynağı bölgenizi 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: 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 verilerini transkribe etmek için beklenen bölge ayarıyla eşleşmesi gereken isteğe bağlı (ancak önerilen) locales özelliğini 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.

Özellik 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 olarak yazılı hale getirilebilir.

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 dönüştürülür ve yalnızca tek bir kanal yazıya dökülür.

Ses stereo ise ve diyerizasyon etkinleştirilmişse, channels ögesini [0,1] olarak ayarlayamazsınız. Konuşma hizmeti, birden çok kanalın diyarize edilmesini 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.
Isteğe bağlı
diarization Diarizasyon yapılandırması. Diyalojik ayrıştırma, 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 cümlesi için speaker, "speaker": 0 veya "speaker": 1 gibi girdiler içerir. Isteğ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 belirleme daha doğru olabilir.

Herhangi bir yerel ayar belirtmezseniz Konuşma hizmeti, yerel ayarı tanımlamak ve sürekli olarak transkripsiyonunu yapmak için en son çok dilli 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 yerel ayarı (dil ve bölge ayarları) biliyorsanız önerilir.
phraseList Deyim listesi, tanınmalarını geliştirmeye yardımcı olmak amacıyla önceden sağlanan kelime veya deyimlerin bir listesidir. İfade listesine bir ifade eklemek, ifadenin önemini artırır ve bu nedenle tanınma ihtimalini arttırır. Örneğin, belirtin phraseList":{"phrases":["Contoso","Jessie","Rehaan"]}. Cümle Listesi, 2025-10-15 API sürümü aracılığıyla desteklenir. Daha fazla bilgi için bkz. Tümcecik listesiyle tanıma doğruluğunu geliştirme. Isteğ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 .Masked Isteğe bağlı

Reference 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.
  • 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 altında 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}"
                )
    

    Referans: TranscriptionClient | TranscriptionContent | TranscriptionOptions | AzureKeyCredential

  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 transcribe_audio_file.py
    

Çıkış

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

Farklı diller arasında dil tespitini etkinleştirmek için locales birden çok yerel ayar adayını geçirin. 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ı için locales tamamen kaldırı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ı diarizasyonu

Diyerizasyon, 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

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

Başvuru: TranscriptionDiarizationOptions, TranscriptionOptions

İfade 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 ayarlayarak ifadelerin ne ölçüde tercih edileceğini kontrol edin (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.

Referans: PhraseListProperties, TranscriptionOptions

Küfür filtresi

Küfürlerin transkripsiyon çıkışında nasıl görüneceğini profanity_filter_mode parametresini kullanarak 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" Küfür çıkıştan tamamen kaldırılır.
"Tags" Küfür <profanity> XML etiketlerinin içine sarılı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 altında 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

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

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

Diarizasyon ile konuşmacıları tanımlama

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

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:

  • 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 dosyanıza "type": "module" el ile ekleyinpackage.json. 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 altında 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. Değiştirin <path-to-your-audio-file.wav> ile ses dosyanızın yolunu.

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

    node transcribe-audio-file.js
    

Çıkış

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

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

Ortak istek seçenekleri

Diarizasyon ile konuşmacıları tanımlama

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

Başvuru: 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,
});

Referans: KnownProfanityFilterModes

Bir tümce listesi ekle

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 yerel ayar seçeneği belirleyebilirsiniz. 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}`);
}

Referans: TranscribedPhrase

Referans belgeleri | Package (Maven) | GitHub Örnekleri

Ö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 ayarlama

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

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

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

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ğruluk için, bilgisine sahip olduğunuzda beklenen yerel ayarı belirtin.

Başvuru: TranscriptionOptions, TranscribedPhrase.getLocale()

Konuşmacı diarizasyonu

Diyerizasyon, 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

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

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

İfade 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ümcecikler, tanıma sistemi tarafından daha fazla önem verilerek doğru ş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 Küfür çıkıştan tamamen kaldırılır.
TAGS Küfür XML etiketlerine sarmalanı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ı temizleme

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

rm -rf transcription-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.