Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Dökümhane projesi. Proje oluşturmanız gerekiyorsa bkz. Microsoft Döküm projesi oluşturma.
Hızlı transkripsiyonu deneyin
-
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.
- Sağ üst menüden Derle'yi seçin.
- Sol bölmede Modeller'i seçin.
- 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.
- Üstteki açılan listede Hızlı transkripsiyon'a tıklayın.
- İ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.
- Ses dosyanızı seçmek için Dosyaları karşıya yükleme bölümünü kullanın. Ardından Başlat'ı seçin.
- 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.
- 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.
- Bilinen bölge ayarı belirtildi
- Dil tanımlama açık
- Çok dilli transkripsiyon
- Diyerizasyon etkin
- Çoklu kanal açık durumda
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
YourSpeechResourceKeydeğerini değiştirin. -
YourServiceRegionile Konuşma kaynağı bölgenizi değiştirin. - Değiştirin
YourAudioFileile 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 olaraken-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
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Python 3.9 veya üzeri sürüm. Python'in uygun bir sürümü yüklü değilse, işletim sisteminize Python yüklemenin en kolay yolu için VS Code Python Tutorial yönergeleri izleyebilirsiniz.
- Desteklenen bölgelerden birinde oluşturulan Microsoft Foundry kaynağı. Bölge kullanılabilirliği hakkında daha fazla bilgi için bkz . Bölge desteği.
- Dökümü yapılacak örnek
.wavbir ses dosyası.
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
adlı
transcription-quickstartyeni bir klasör oluşturun ve aşağıdaki komutu kullanarak hızlı başlangıç klasörüne gidin:mkdir transcription-quickstart && cd transcription-quickstartBu öğ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:
Python ortamını etkinleştirdiğinizde, komut satırından
pythonveyapipçalıştırmak, uygulamanızın.venvklasöründeki Python yorumlayıcısını kullanır. Python sanal ortamından çıkmak içindeactivatekomutunu kullanın. Daha sonra gerektiğinde yeniden etkinleştirebilirsiniz.requirements.txtadlı bir dosya oluşturun. Dosyaya aşağıdaki paketleri ekleyin:
azure-ai-transcription azure-identityPaketleri 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.
Foundry portalında oturum açın.
Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar altında Konuşma veya çoklu hizmet kaynağınızı seçin.
Anahtarlar ve Uç Nokta'yı seçin.
Uç Nokta ve Anahtar değerlerini kopyalayın. Ortam değişkenlerini ayarlamak için bu değerleri kullanın.
Aşağıdaki ortam değişkenlerini ayarlayın:
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
Aşağıdaki kodla adlı
transcribe_audio_file.pybir 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
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.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
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- .NET 8.0 SDK veya üzeri.
- Desteklenen bölgelerden birinde oluşturulan Microsoft Foundry kaynağı. Bölge kullanılabilirliği hakkında daha fazla bilgi için bkz . Bölge desteği.
- Dökümü yapılacak örnek
.wavbir ses dosyası.
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
.NET CLI ile yeni bir konsol uygulaması oluşturun:
dotnet new console -n transcription-quickstart cd transcription-quickstartGerekli 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.
Foundry portalında oturum açın.
Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar altında Konuşma veya çoklu hizmet kaynağınızı seçin.
Anahtarlar ve Uç Nokta'yı seçin.
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
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Node.js LTS.
- Desteklenen bölgelerden birinde oluşturulan Microsoft Foundry kaynağı. Bölge kullanılabilirliği hakkında daha fazla bilgi için bkz . Bölge desteği.
- Dökümü yapılacak örnek
.wavbir ses dosyası.
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
Yeni bir klasör oluşturun ve bir Node.js projesi başlatın:
mkdir transcription-quickstart cd transcription-quickstart npm init -yGerekli paketleri yükleyin:
npm install @azure/ai-speech-transcription @azure/identitymodülü türünü cihazınıza
package.jsonekleyerek projeyi ES modüllerini kullanacak şekilde yapılandırın:npm pkg set type=moduleVeya dosyanıza
"type": "module"el ile ekleyinpackage.json. Bu, örnek koddakiimportdeyimlerin çalışması için gereklidir.
Kaynak bilgilerini alma
Kimlik doğrulaması için kaynak uç noktanızı almanız gerekir.
Foundry portalında oturum açın.
Soldaki menüden Yönetim merkezi'ni seçin. Bağlı kaynaklar altında Konuşma veya çoklu hizmet kaynağınızı seçin.
Anahtarlar ve Uç Nokta'yı seçin.
Uç nokta değerini kopyalayın ve ortam değişkeni olarak ayarlayın:
Ses dökümü yapma
Aşağıdaki kodla adlı
transcribe-audio-file.jsbir 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
Değiştirin
<path-to-your-audio-file.wav>ile ses dosyanızın yolunu.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
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Java Development Kit (JDK) 8 veya üzeri.
- Bağımlılık yönetimi ve projeyi derleme için Apache Maven.
- Desteklenen bölgelerden birinde Microsoft Foundry kaynağı. Bölge kullanılabilirliği hakkında daha fazla bilgi için bkz . Konuşma hizmeti tarafından desteklenen bölgeler.
- Dökümü yapılacak örnek
.wavbir ses dosyası.
Ortamı ayarlama
adlı
transcription-quickstartyeni bir klasör oluşturun ve klasörüne gidin:mkdir transcription-quickstart && cd transcription-quickstartProje dizininizin kökünde aşağıdaki içeriğe sahip bir
pom.xmldosya 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ılansrc/main/javayapı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.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:
Ardından aşağıdaki kimlik doğrulama yöntemlerinden birini seçin:
Seçenek 1: API anahtarı kimlik doğrulaması (kullanmaya başlamak için önerilir)
API anahtarı ortam değişkenini ayarlayın:
Seçenek 2: Microsoft Entra ID kimlik doğrulaması (üretim için önerilir)
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_IDveAZURE_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.
Önerilen yeniden deneme yapılandırması
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:
ServiceRequestErrorServiceResponseError
Bu hatalar,
urllib3.exceptions.ReadTimeoutErrorgibi alt düzey ağ istisnalarını, bağlantı sıfırlamaları ve TLS hataları dahil olmak üzere kapsar.Python ağ özel durumları - Yeniden deneyin:
ConnectionErrorTimeoutErrorOSError
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.