Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Batch-synthese-API kan asynchroon een grote hoeveelheid tekstinvoer (lang en kort) synthetiseren. Uitgevers en platforms voor audio-inhoud kunnen lange audio-inhoud in een batch maken. Bijvoorbeeld: audioboeken, nieuwsartikelen en documenten. De batchsynthese-API kan gesynthetiseerde audio langer dan 10 minuten maken.
Belangrijk
De Batch-synthese-API is algemeen beschikbaar. De Long Audio-API wordt op 1 april 2027 buiten gebruik gesteld. Zie Migreren naar batchsynthese-API voor meer informatie.
De batchsynthese-API is asynchroon en retourneert geen gesynthetiseerde audio in realtime. U verzendt tekstbestanden die moeten worden gesynthetiseerd, peilt naar de status en downloadt de audio-uitvoer wanneer de status aangeeft dat de status is geslaagd. De tekstinvoer moet tekst zonder opmaak of SSML-tekst (Speech Synthesis Markup Language) zijn.
Dit diagram biedt een algemeen overzicht van de werkstroom.
Aanbeveling
U kunt de Speech SDK ook gebruiken om gesynthetiseerde audio langer dan 10 minuten te maken door de tekst te herhalen en te synthetiseren in segmenten. Zie GitHub voor een C#-voorbeeld.
U kunt de volgende REST API-bewerkingen gebruiken voor batchsynthese:
| Operatie | Methode | REST API-aanroep |
|---|---|---|
| Batchsynthese maken | PUT |
texttospeech/batchsyntheses/YourSynthesisId |
| Batchsynthese ophalen | GET |
texttospeech/batchsyntheses/YourSynthesisId |
| Batchsynthese vermelden | GET |
tekstspraak/batchsyntheses |
| Batch synthese verwijderen | DELETE |
texttospeech/batchsyntheses/YourSynthesisId |
Zie GitHub voor codevoorbeelden.
Batchsynthese maken
Als u een batchsyntheseaanvraag wilt verzenden, maakt u het HTTP PUT-aanvraagpad en de hoofdtekst volgens de volgende instructies:
- Stel de vereiste
inputKindeigenschap in. - Als de
inputKindeigenschap is ingesteld op 'PlainText', moet u ook devoiceeigenschap instellen in desynthesisConfig. In het volgende voorbeeld is deinputKindset ingesteld op 'SSML', dus desynthesisConfigis niet ingesteld. - U kunt desgewenst de
description,timeToLiveInHoursen andere eigenschappen instellen. Zie de eigenschappen van batchsynthese voor meer informatie.
Notitie
De maximale grootte van de JSON-nettolading die wordt geaccepteerd, is 2 megabytes.
Stel het vereiste YourSynthesisId pad in. De YourSynthesisId moet uniek zijn. Het moet 3-64 tekens lang zijn, mag alleen cijfers, letters, afbreekstreepjes, onderstrepingstekens en punten bevatten en beginnen en eindigen met een letter of cijfer.
Maak een HTTP PUT-aanvraag met behulp van de URI, zoals wordt weergegeven in het volgende voorbeeld. Vervang door YourSpeechKey uw Spraak-resourcesleutel, vervang deze door YourResourceName de naam van de Spraak-resource en stel de eigenschappen van de aanvraagbody in zoals eerder beschreven.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
"description": "my ssml test",
"inputKind": "SSML",
"inputs": [
{
"content": "<speak version=\"1.0\" xml:lang=\"en-US\"><voice name=\"en-US-JennyNeural\">The rainbow has seven colors.</voice></speak>"
}
],
"properties": {
"outputFormat": "riff-24khz-16bit-mono-pcm",
"wordBoundaryEnabled": false,
"sentenceBoundaryEnabled": false,
"concatenateResult": false,
"decompressOutputFiles": false
}
}' "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"
U ontvangt een antwoordtekst in de volgende indeling:
{
"id": "YourSynthesisId",
"status": "Running",
"createdDateTime": "2024-03-12T07:23:18.0097387Z",
"lastActionDateTime": "2024-03-12T07:23:18.0097388Z",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 168,
"outputFormat": "riff-24khz-16bit-mono-pcm",
"concatenateResult": false,
"decompressOutputFiles": false,
"wordBoundaryEnabled": false,
"sentenceBoundaryEnabled": false
}
}
De status eigenschap moet van status Running naar status Succeeded of Failed gaan. U kunt de GET batchsynthese-API periodiek aanroepen totdat de geretourneerde status is Succeeded of Failed.
Batchsynthese ophalen
Als u de status van de batchsynthesetaak wilt ophalen, maakt u een HTTP GET-aanvraag met behulp van de URI, zoals wordt weergegeven in het volgende voorbeeld. Vervang YourSpeechKey door uw Spraak-resourcesleutel en vervang deze door YourResourceName de naam van uw Spraak-resource.
curl -v -X GET "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
U ontvangt een antwoordtekst in de volgende indeling:
{
"id": "YourSynthesisId",
"status": "Succeeded",
"createdDateTime": "2024-03-12T07:23:18.0097387Z",
"lastActionDateTime": "2024-03-12T07:23:18.7979669",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 168,
"outputFormat": "riff-24khz-16bit-mono-pcm",
"concatenateResult": false,
"decompressOutputFiles": false,
"wordBoundaryEnabled": false,
"sentenceBoundaryEnabled": false,
"sizeInBytes": 120000,
"succeededAudioCount": 1,
"failedAudioCount": 0,
"durationInMilliseconds": 2500,
"billingDetails": {
"neuralCharacters": 29
}
},
"outputs": {
"result": "https://stttssvcuse.blob.core.windows.net/batchsynthesis-output/29f2105f997c4bfea176d39d05ff201e/YourSynthesisId/results.zip?SAS_Token"
}
}
Hier outputs.resultkunt u een ZIP-bestand met de audio (zoals 0001.wav), samenvatting en foutopsporingsgegevens downloaden. Zie batchsyntheseresultaten voor meer informatie.
Batchsynthese vermelden
Als u alle batchsynthesetaken voor de Spraak-resource wilt weergeven, maakt u een HTTP GET-aanvraag met behulp van de URI, zoals wordt weergegeven in het volgende voorbeeld. Vervang YourSpeechKey door uw Spraak-resourcesleutel en vervang deze door YourResourceName de naam van uw Speech-resource. U kunt desgewenst de skip en maxpagesize (maximaal 100) queryparameters instellen in de URL. De standaardwaarde is skip 0 en de standaardwaarde is maxpagesize 100.
curl -v -X GET "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses?api-version=2024-04-01&skip=1&maxpagesize=2" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
U ontvangt een antwoordtekst in de volgende indeling:
{
"value": [
{
"id": "my-job-03",
"status": "Succeeded",
"createdDateTime": "2024-03-12T07:28:32.5690441Z",
"lastActionDateTime": "2024-03-12T07:28:33.0042293",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 168,
"outputFormat": "riff-24khz-16bit-mono-pcm",
"concatenateResult": false,
"decompressOutputFiles": false,
"wordBoundaryEnabled": false,
"sentenceBoundaryEnabled": false,
"sizeInBytes": 120000,
"succeededAudioCount": 1,
"failedAudioCount": 0,
"durationInMilliseconds": 2500,
"billingDetails": {
"neuralCharacters": 29
}
},
"outputs": {
"result": "https://stttssvcuse.blob.core.windows.net/batchsynthesis-output/29f2105f997c4bfea176d39d05ff201e/my-job-03/results.zip?SAS_Token"
}
},
{
"id": "my-job-02",
"status": "Succeeded",
"createdDateTime": "2024-03-12T07:28:29.6418211Z",
"lastActionDateTime": "2024-03-12T07:28:30.0910306",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 168,
"outputFormat": "riff-24khz-16bit-mono-pcm",
"concatenateResult": false,
"decompressOutputFiles": false,
"wordBoundaryEnabled": false,
"sentenceBoundaryEnabled": false,
"sizeInBytes": 120000,
"succeededAudioCount": 1,
"failedAudioCount": 0,
"durationInMilliseconds": 2500,
"billingDetails": {
"neuralCharacters": 29
}
},
"outputs": {
"result": "https://stttssvcuse.blob.core.windows.net/batchsynthesis-output/29f2105f997c4bfea176d39d05ff201e/my-job-02/results.zip?SAS_Token"
}
}
],
"nextLink": "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses?skip=3&maxpagesize=2&api-version=2024-04-01"
}
Hier outputs.resultkunt u een ZIP-bestand met de audio (zoals 0001.wav), samenvatting en foutopsporingsgegevens downloaden. Zie batchsyntheseresultaten voor meer informatie.
De value eigenschap in het json-antwoord bevat uw syntheseaanvragen. De lijst is gepagineerd, met een maximale paginagrootte van 100. De "nextLink" eigenschap wordt indien nodig opgegeven om de volgende pagina van de gepagineerde lijst op te halen.
Batchsynthese verwijderen
Verwijder de geschiedenis van de batch-synthesetaak nadat u de resultaten van de audio-uitvoer heeft opgehaald. De Speech-service bewaart standaard de geschiedenis van batchsynthese gedurende 168 uur (7 dagen). U kunt deze bewaarperiode ook opgeven met behulp van de timeToLiveInHours eigenschap, tot 744 uur (31 dagen). De datum en tijd van automatische verwijdering (voor synthesetaken met de status Geslaagd of Mislukt) is gelijk aan de lastActionDateTime + timeToLiveInHours eigenschappen.
Als u een batchsynthesetaak wilt verwijderen, maakt u een HTTP DELETE-aanvraag met behulp van de URI, zoals wordt weergegeven in het volgende voorbeeld. Vervang YourSynthesisId door uw batchsynthese-ID, vervang YourSpeechKey door uw Speech-resourcesleutel en vervang YourResourceName door uw Speech-resourcenaam.
curl -v -X DELETE "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
De antwoordheaders bevatten HTTP/1.1 204 No Content als de verwijderaanvraag is geslaagd.
Resultaten van batchsynthese
Nadat u een batchsynthesetaak met status Geslaagd hebt ontvangen, kunt u de resultaten van de audio-uitvoer downloaden. Gebruik de URL uit de outputs.result eigenschap van het GET-antwoord voor batchsynthese.
Als u het batchsyntheseresultatenbestand wilt ophalen, maakt u een HTTP GET-aanvraag met behulp van de URI, zoals wordt weergegeven in het volgende voorbeeld. Vervang YourOutputsResultUrl door de URL uit de outputs.result eigenschap van het batchsynthese GET antwoord. Vervang YourSpeechKey met uw Spraak-resourcesleutel.
curl -v -X GET "YourOutputsResultUrl" -H "Ocp-Apim-Subscription-Key: YourSpeechKey" > results.zip
De resultaten bevinden zich in een ZIP-bestand dat de audio (zoals 0001.wav), samenvatting en foutopsporingsgegevens bevat. Het genummerde voorvoegsel van elke bestandsnaam (hieronder weergegeven als [nnnn]) bevindt zich in dezelfde volgorde als de tekstinvoer die u hebt gebruikt bij het maken van de batchsynthese.
Notitie
Het [nnnn].debug.json bestand bevat de syntheseresultaat-id en andere informatie die kan helpen bij het oplossen van problemen. De eigenschappen die het bevat, kunnen worden gewijzigd, dus u moet geen afhankelijkheden nemen van de JSON-indeling.
Het samenvattingsbestand bevat de syntheseresultaten voor elke tekstinvoer. Hier volgt een voorbeeldbestand summary.json :
{
"jobID": "7ab84171-9070-4d3b-88d4-1b8cc1cb928a",
"status": "Succeeded",
"results": [
{
"contents": ["<speak version=\"1.0\" xml:lang=\"en-US\"><voice name=\"en-US-JennyNeural\">The rainbow has seven colors.</voice></speak>"],
"status": "Succeeded",
"audioFileName": "0001.wav",
"properties": {
"sizeInBytes": "120000",
"durationInMilliseconds": "2500"
}
}
]
}
Als zinnengrensgegevens zijn aangevraagd ("sentenceBoundaryEnabled": true), wordt er een bijbehorend [nnnn].sentence.json bestand in de resultaten opgenomen. Als er woordgrensgegevens zijn aangevraagd ("wordBoundaryEnabled": true), wordt er ook een bijbehorend [nnnn].word.json bestand in de resultaten opgenomen.
Hier volgt een voorbeeld van een word-gegevensbestand met zowel audio-offset als duur in milliseconden:
[
{
"Text": "The",
"AudioOffset": 50,
"Duration": 137
},
{
"Text": "rainbow",
"AudioOffset": 200,
"Duration": 350
},
{
"Text": "has",
"AudioOffset": 562,
"Duration": 175
},
{
"Text": "seven",
"AudioOffset": 750,
"Duration": 300
},
{
"Text": "colors",
"AudioOffset": 1062,
"Duration": 625
},
{
"Text": ".",
"AudioOffset": 1700,
"Duration": 100
}
]
Latentie en best practices voor batchverwerking
Wanneer u batchsynthese gebruikt voor het genereren van gesynthetiseerde spraak, is het belangrijk om rekening te houden met de latentie die betrokken is en best practices te volgen voor het bereiken van optimale resultaten.
Latentie in batchverwerking
De latentie in batchsynthese is afhankelijk van verschillende factoren, waaronder de complexiteit van de invoertekst, het aantal invoerinvoer in de batch en de verwerkingsmogelijkheden van de onderliggende hardware.
De latentie voor batchsynthese is als volgt (ongeveer):
De latentie van 50% van de gesynthetiseerde spraakuitvoer is binnen 10-20 seconden.
De latentie van 95% van de gesynthetiseerde spraakuitvoer is binnen 120 seconden.
Beste praktijken
Wanneer u batchsynthese voor uw toepassing overweegt, is het raadzaam om te beoordelen of de latentie voldoet aan uw vereisten. Als de latentie overeenkomt met de gewenste prestaties, kan batchsynthese een geschikte keuze zijn. Als de latentie echter niet aan uw behoeften voldoet, kunt u overwegen om realtime-API te gebruiken.
HTTP-statuscode
In de sectie worden de HTTP-antwoordcodes en -berichten van de batchsynthese-API beschreven.
HTTP 200 OK
HTTP 200 OK geeft aan dat de aanvraag is geslaagd.
HTTP 201 gemaakt
HTTP 201 Created geeft aan dat de aanvraag voor batchsynthese maken (via HTTP PUT) is geslaagd.
HTTP 204-fout
Een HTTP 204-fout geeft aan dat de aanvraag is geslaagd, maar dat de resource niet bestaat. Voorbeeld:
- U hebt geprobeerd een synthesewerk op te halen of te verwijderen dat niet bestaat.
- Je hebt met succes een synthesetaak verwijderd.
HTTP 400-fout
Hier volgen voorbeelden die kunnen leiden tot de 400-fout:
- De
outputFormatnaam wordt niet ondersteund of is ongeldig. Geef een geldige notatiewaarde op of laatoutputFormatleeg om de standaardinstelling te gebruiken. - Het aantal aangevraagde tekstinvoeren heeft de limiet van 10.000 overschreden.
- U hebt geprobeerd een ongeldige deployment-ID of een aangepaste stem te gebruiken die niet succesvol is geïmplementeerd. Zorg ervoor dat de Spraak-resource toegang heeft tot de aangepaste stem en dat de aangepaste stem succesvol is uitgerold. U moet er ook voor zorgen dat de toewijzing
{"your-custom-voice-name": "your-deployment-ID"}juist is in uw batchsyntheseaanvraag. - U hebt geprobeerd een F0 Speech-resource te gebruiken, maar de regio ondersteunt alleen de prijscategorie Standard Speech-resources.
HTTP 404-fout
De opgegeven entiteit kan niet worden gevonden. Zorg ervoor dat de synthese-id juist is.
HTTP 429-fout
Er zijn te veel recente aanvragen. Elke clienttoepassing kan maximaal 100 aanvragen per 10 seconden verzenden voor elke Speech-resource. Verminder het aantal aanvragen per seconde.
HTTP 500-fout
HTTP 500 Interne serverfout geeft aan dat de aanvraag is mislukt. De hoofdtekst van het antwoord bevat het foutbericht.
Voorbeeld van HTTP-fout
Hier volgt een voorbeeld van een aanvraag die resulteert in een HTTP 400-fout, omdat de inputs eigenschap is vereist om een taak te maken.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
"inputKind": "SSML"
}' "https://YourResourceName.cognitiveservices.azure.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"
In dit geval bevatten HTTP/1.1 400 Bad Requestde antwoordheaders .
De hoofdtekst van het antwoord lijkt op het volgende JSON-voorbeeld:
{
"error": {
"code": "BadRequest",
"message": "The inputs is required."
}
}