Aracılığıyla paylaş


Metin okuma için toplu sentez özellikleri

Önemli

Batch sentez API'sini genel olarak kullanabilirsiniz. Uzun Ses API'si 1 Nisan 2027'de kullanımdan kaldırılacaktır. Daha fazla bilgi için bkz . Toplu sentez API'sine geçiş.

Batch sentez API'si, büyük miktarda metin girişini (uzun ve kısa) zaman uyumsuz olarak sentezleyebilir. Yayımcılar ve ses içeriği platformları toplu olarak uzun ses içeriği oluşturabilir. Örneğin: sesli kitaplar, haber makaleleri ve belgeler. Toplu sentez API'si 10 dakikadan daha uzun bir şekilde sentezlenmiş ses oluşturabilir.

Yeni bir toplu sentez işi oluşturduğunuzda JSON biçimindeki bazı özellikler gereklidir. Diğer özellikler isteğe bağlıdır. Toplu sentez yanıtı, sentez durumu ve sonuçları hakkında bilgi sağlamak için diğer özellikleri içerir. Örneğin özelliği, outputs.result ses çıkışı ve günlükleri içeren toplu sentez sonuç dosyalarının konumunu içerir.

Toplu sentez özellikleri

Toplu sentez özellikleri aşağıdaki tabloda açıklanmıştır.

Özellik Açıklama
createdDateTime Toplu sentez işinin oluşturulduğu tarih ve saat.

Bu özellik salt okunur durumdadır.
customVoices Özel ses adının ve dağıtım kimliğinin haritası.

Örneğin: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"}

Ses adını kendinizde synthesisConfig.voice ( inputKind olarak ayarlandığında "PlainText") veya SSML metninde inputs ( inputKind olarak ayarlandığında "SSML") kullanabilirsiniz.

Bu özellik, özel bir ses kullanmak için gereklidir. Burada tanımlanmayan özel bir ses kullanmaya çalışırsanız hizmet bir hata döndürür.
description Toplu sentezin açıklaması.

Bu özellik isteğe bağlıdır.
id Yolda geçtiğiniz toplu sentez işi kimliği.

Bu özellik yolda gereklidir.
inputs Sentezlenecek düz metin veya SSML.

inputKind olarak ayarlandığında"PlainText", burada gösterildiği gibi düz metin sağlayın: "inputs": [{"text": "The rainbow has seven colors."}]. olarak ayarlandığında"SSML", burada gösterildiği gibi Konuşma Sentezi Biçimlendirme Dili'nde (SSML) metin sağlayın: "inputs": [{"text": "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-AvaMultilingualNeural'\''>The rainbow has seven colors.</voice></speak>"}].inputKind

Birden çok ses çıkış dosyası istiyorsanız en fazla 1.000 metin nesnesi ekleyin. İki ses çıkış dosyası olarak sentezlenmesi gereken örnek giriş metni aşağıda verilmişti: "inputs": [{"text": "synthesize this to a file"},{"text": "synthesize this to another file"}]. Ancak özelliği olarak ayarlanırsa properties.concatenateResulttrue, sentezlenen her sonuç aynı ses çıkış dosyasına yazılır.

Yeni paragraflar için ayrı metin girişlerine ihtiyacınız yoktur. Herhangi bir (en fazla 1.000) metin girişi içinde, "\r\n" (yeni satır) dizesini kullanarak yeni paragraflar belirtebilirsiniz. Aynı ses çıkış dosyasına sentezlenmesi gereken iki paragraf içeren örnek giriş metni aşağıda verilmiştir: "inputs": [{"text": "synthesize this to a file\r\nsynthesize this to another paragraph in the same file"}]

Paragraf sınırı yoktur, ancak en fazla JSON yükü boyutu (tüm metin girişleri ve diğer özellikler dahil) 500 kilobayttır.

Yeni bir toplu sentez işi oluşturduğunuzda bu özellik gereklidir. Sentez işini aldığınızda bu özellik yanıta dahil değildir.
internalId İç toplu iş sentezi iş kimliği.

Bu özellik salt okunur durumdadır.
lastActionDateTime Özellik değerinin status değiştirildiği en son tarih ve saat.

Bu özellik salt okunur durumdadır.
outputs.result Ses çıkışı ve günlükleri içeren toplu sentez sonuç dosyalarının konumu.

Bu özellik salt okunur durumdadır.
properties İsteğe bağlı toplu sentez yapılandırma ayarları kümesi.
properties.sizeInBytes Bayt cinsinden ses çıkış boyutu.

Bu özellik salt okunur durumdadır.
properties.billingDetails Tarafından işlenen ve faturalandırılan customNeuralCharactersneuralCharacters sözcüklerin ve (önceden oluşturulmuş) seslerin sayısı.

Bu özellik salt okunur durumdadır.
properties.concatenateResult Sonucun birleşip birleşmeyeceğini belirler. Bu isteğe bağlı bool değer ("true" veya "false") varsayılan olarak "false" olur.
properties.decompressOutputFiles Hedef kapsayıcıda sentez sonuç dosyalarının sıkıştırmasının açılıp açılıp açmayacağını belirler. Bu özellik yalnızca özellik ayarlandığında destinationContainerUrl ayarlanabilir. Bu isteğe bağlı bool değer ("true" veya "false") varsayılan olarak "false" olur.
properties.destinationContainerUrl Toplu sentez sonuçları yazılabilir bir Azure kapsayıcısında depolanabilir. Paylaşılan erişim imzaları (SAS) belirteciyle bir kapsayıcı URI'sini belirtmezseniz Konuşma hizmeti sonuçları Microsoft tarafından yönetilen bir kapsayıcıda depolar. Depolanan erişim ilkelerine sahip SAS desteklenmez. Sentez işi silindiğinde sonuç verileri de silinir.

Bu isteğe bağlı özellik, sentez işini aldığınızda yanıta dahil değildir.
properties.destinationPath Toplu sentez sonuçlarının depolanabildiği ön ek yolu. Ön ek yolu belirtmezseniz, varsayılan ön ek yolu olur YourSpeechResourceId/YourSynthesisId.

Bu isteğe bağlı özellik yalnızca özellik ayarlandığında ayarlanabilir destinationContainerUrl .
properties.durationInMilliseconds Milisaniye cinsinden ses çıkış süresi.

Bu özellik salt okunur durumdadır.
properties.failedAudioCount Ses çıkışına toplu sentez girişlerinin sayısı başarısız oldu.

Bu özellik salt okunur durumdadır.
properties.outputFormat Ses çıkış biçimi.

Kabul edilen değerler hakkında bilgi için bkz . ses çıkış biçimleri. Varsayılan çıkış biçimi riff-24khz-16bit-mono-pcm.
properties.sentenceBoundaryEnabled Tümce sınırı verilerinin oluşturulup oluşturulmayacağını belirler. Bu isteğe bağlı bool değer ("true" veya "false") varsayılan olarak "false" olur.

Tümce sınırı verileri istenirse sonuç verileri ZIP dosyasına karşılık gelen [nnnn].sentence.json bir dosya eklenir.
properties.succeededAudioCount Ses çıkışına toplu sentez girişlerinin sayısı başarılı oldu.

Bu özellik salt okunur durumdadır.
properties.timeToLiveInHours Sentez işi oluşturulduktan sonra, sentez sonuçlarının otomatik olarak silineceği saat cinsinden bir süre. Bu isteğe bağlı ayar 744 varsayılan olarak (31 gündür). Maksimum yaşam süresi 31 gündür. Otomatik silme tarihi ve saati ("Başarılı" veya "Başarısız" durumundaki sentez işleri için) özelliklere lastActionDateTime + timeToLiveInHours eşittir.

Aksi takdirde, işi daha erken kaldırmak için silme sentezi yöntemini çağırabilirsiniz.
properties.wordBoundaryEnabled Sözcük sınırı verilerinin oluşturulup oluşturulmayacağını belirler. Bu isteğe bağlı bool değer ("true" veya "false") varsayılan olarak "false" olur.

Sözcük sınırı verileri istenirse sonuç verileri ZIP dosyasına karşılık gelen [nnnn].word.json bir dosya eklenir.
status Toplu sentez işleme durumu.

Durum "NotStarted" yerine "Çalışıyor" durumuna ve son olarak "Başarılı" veya "Başarısız" durumuna geçmelidir.

Bu özellik salt okunur durumdadır.
synthesisConfig Düz metnin toplu sentezi için kullanılacak yapılandırma ayarları.

Bu özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.backgroundAudio Her ses çıkışı için arka plan sesi.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.backgroundAudio.fadein Arka plan sesinin süresi milisaniye olarak kaybolur. Varsayılan değer, 0belirmemeye eşdeğer olan değeridir. Kabul edilen değerler: 0 dahil olmak üzere 10000 .

Bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerinde arka plan sesi ekleme altındaki öznitelikler tablosuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.backgroundAudio.fadeout Arka plan sesinin süresi milisaniye cinsinden kaybolur. Varsayılan değer, 0belirmemeye eşdeğer olan değeridir. Kabul edilen değerler: 0 dahil olmak üzere 10000 .

Bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerinde arka plan sesi ekleme altındaki öznitelikler tablosuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.backgroundAudio.src Arka plan ses dosyasının URI konumu.

Bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerinde arka plan sesi ekleme altındaki öznitelikler tablosuna bakın. Geçersiz değerler yoksayılır.

Bu özellik ayarlandığında gereklidir synthesisConfig.backgroundAudio .
synthesisConfig.backgroundAudio.volume Arka plan ses dosyasının ses düzeyi. Kabul edilen değerler: 0 dahil olmak üzere 100 . Varsayılan değer şudur: 1.

Bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerinde arka plan sesi ekleme altındaki öznitelikler tablosuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.pitch Ses çıkışının perdesi.

Kabul edilen değerler hakkında bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerindeki prosody tablosunu ayarlama konusuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.rate Ses çıkışının hızı.

Kabul edilen değerler hakkında bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerindeki prosody tablosunu ayarlama konusuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.role Bazı sesler için konuşma rol oyununu ayarlayabilirsiniz. Ses farklı bir yaşı ve cinsiyeti taklit edebilir, ancak ses adı değiştirilmez. Örneğin, bir erkek sesi sesi yükseltebilir ve tonlamayı kadın sesini taklit etmek için değiştirebilir, ancak ses adı değiştirilmez. Rol eksikse veya sesinizde desteklenmiyorsa, bu öznitelik yoksayılır.

Ses başına kullanılabilir stiller hakkında daha fazla bilgi için bkz . ses stilleri ve roller.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.speakerProfileId Kişisel bir sesin konuşmacı profili kimliği.

Kullanılabilir kişisel ses tabanı model adları hakkında bilgi için bkz . Kişisel sesi tümleştirme.
Konuşmacı profili kimliğini alma hakkında bilgi için bkz . dil ve ses desteği.

bu özellik olarak ayarlandığında "PlainText"gereklidirinputKind.
synthesisConfig.style Bazı sesler için, neşelilik, empati ve sakinlik gibi farklı duyguları ifade etmek için konuşma stilini ayarlayabilirsiniz. Sesi müşteri hizmetleri, haber yayını ve sesli yardımcı gibi farklı senaryolar için iyileştirebilirsiniz.

Ses başına kullanılabilir stiller hakkında daha fazla bilgi için bkz . ses stilleri ve roller.

Bu isteğe bağlı özellik yalnızca ayarlandığında geçerlidir synthesisConfig.style .
synthesisConfig.styleDegree Konuşma stilinin yoğunluğu. Konuşmayı daha etkileyici veya alt düzey yapmak için daha güçlü veya daha yumuşak bir stil belirtebilirsiniz. Kabul edilen değerler aralığı şunlardır: 0,01 ile 2 (dahil). Varsayılan değer 1'dir ve bu da önceden tanımlanmış stil yoğunluğu anlamına gelir. Minimum birim 0,01'dir ve bu da hedef stil için hafif bir eğilimle sonuçlanır. 2 değeri, varsayılan stil yoğunluğunun iki katına çıkar. Stil derecesi eksikse veya sesinizde desteklenmiyorsa, bu öznitelik yoksayılır.

Ses başına kullanılabilir stiller hakkında daha fazla bilgi için bkz . ses stilleri ve roller.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
synthesisConfig.voice Ses çıkışını konuşan ses.

Önceden oluşturulmuş nöral sesler hakkında daha fazla bilgi için bkz . dil ve ses desteği. Özel ses kullanmak için özelliğinde geçerli bir özel ses ve dağıtım kimliği eşlemesi customVoices belirtmeniz gerekir. Kişisel bir ses kullanmak için özelliğini belirtmeniz synthesisConfig.speakerProfileId gerekir.

bu özellik olarak ayarlandığında "PlainText"gereklidirinputKind.
synthesisConfig.volume Ses çıkışının ses düzeyi.

Kabul edilen değerler hakkında bilgi için Konuşma Sentezi biçimlendirme dili (SSML) belgelerindeki prosody tablosunu ayarlama konusuna bakın. Geçersiz değerler yoksayılır.

Bu isteğe bağlı özellik yalnızca olarak ayarlandığında "PlainText"geçerlidirinputKind.
inputKind Metin özelliğinin inputs düz metin mi yoksa SSML mi olması gerektiğini gösterir. Olası büyük/küçük harfe duyarsız değerler "PlainText" ve "SSML" değerleridir. inputKind olarak ayarlandığında"PlainText", ses özelliğini de ayarlamanız synthesisConfig gerekir.

Bu özellik gereklidir.

Toplu sentez gecikme süresi ve en iyi yöntemler

Sentezlenmiş konuşma oluşturmak için toplu sentez kullanılırken, söz konusu gecikme süresini göz önünde bulundurmak ve en iyi sonuçları elde etmek için en iyi yöntemleri izlemek önemlidir.

Toplu sentezde gecikme süresi

Toplu sentezdeki gecikme süresi, giriş metninin karmaşıklığı, toplu işlemdeki girişlerin sayısı ve temel alınan donanımın işleme özellikleri gibi çeşitli faktörlere bağlıdır.

Toplu sentez için gecikme süresi aşağıdaki gibidir (yaklaşık):

  • Sentezlenen konuşma çıkışlarının %50'sinin gecikme süresi 10-20 saniye arasındadır.

  • Sentezlenen konuşma çıkışlarının %95'inin gecikme süresi 120 saniye içindedir.

En iyi yöntemler

Uygulamanız için toplu sentezi göz önünde bulundururken gecikme süresinin gereksinimlerinizi karşılayıp karşılamadığını değerlendirmeniz önerilir. Gecikme süresi istediğiniz performansla uyumluysa, toplu sentez uygun bir seçim olabilir. Ancak gecikme süresi gereksinimlerinizi karşılamıyorsa gerçek zamanlı API kullanmayı düşünebilirsiniz.

HTTP durum kodu

bölümünde toplu sentez API'sinden http yanıt kodları ve iletileri ayrıntılı olarak verilmiştir.

HTTP 200 Tamam

HTTP 200 Tamam, isteğin başarılı olduğunu gösterir.

HTTP 201 Oluşturuldu

HTTP 201 Created, toplu sentez oluşturma isteğinin (HTTP POST aracılığıyla) başarılı olduğunu gösterir.

HTTP 204 hatası

HTTP 204 hatası isteğin başarılı olduğunu ancak kaynağın mevcut olmadığını gösterir. Örneğin:

  • Var olmayan bir sentez işini almaya veya silmeye çalıştınız.
  • Bir sentez işini başarıyla sildiyseniz.

HTTP 400 hatası

Aşağıda 400 hatasına neden olabilecek örnekler verilmiştir:

  • outputFormat desteklenmiyor veya geçersiz. Geçerli bir biçim değeri sağlayın veya varsayılan ayarı kullanmak için boş bırakın outputFormat .
  • İstenen metin girişi sayısı 10.000 sınırını aştı.
  • Geçersiz bir dağıtım kimliği veya başarıyla dağıtılmayan özel bir ses kullanmayı denediniz. Konuşma kaynağının özel sese erişimi olduğundan ve özel sesin başarıyla dağıtıldığından emin olun. Toplu sentez isteğinizde eşlemesinin {"your-custom-voice-name": "your-deployment-ID"} doğru olduğundan da emin olmanız gerekir.
  • F0 Konuşma kaynağını kullanmayı denediniz, ancak bölge yalnızca Standart Konuşma kaynağı fiyatlandırma katmanını destekliyor.

HTTP 404 hatası

Belirtilen varlık bulunamıyor. Sentez kimliğinin doğru olduğundan emin olun.

HTTP 429 hatası

Çok fazla son istek var. Her istemci uygulaması, her Konuşma kaynağı için 10 saniye başına en fazla 100 istek gönderebilir. Saniye başına istek sayısını azaltın.

HTTP 500 hatası

HTTP 500 İç Sunucu Hatası, isteğin başarısız olduğunu gösterir. Yanıt gövdesi hata iletisini içerir.

HTTP hata örneği

burada bir http 400 hatasına neden olan örnek bir istek verilmiştir, çünkü inputs özellik bir iş oluşturmak için gereklidir.

curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
    "inputKind": "SSML"
}'  "https://YourSpeechRegion.api.cognitive.microsoft.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"

Bu durumda, yanıt üst bilgileri içerir HTTP/1.1 400 Bad Request.

Yanıt gövdesi aşağıdaki JSON örneğine benzer:

{
  "error": {
    "code": "BadRequest",
    "message": "The inputs is required."
  }
}

Sonraki adımlar