Udostępnij za pośrednictwem


Właściwości syntezy wsadowej dla zamiany tekstu na mowę

Ważne

Interfejs API syntezy usługi Batch jest ogólnie dostępny. Interfejs Long Audio API zostanie wycofany 1 kwietnia 2027 r. Aby uzyskać więcej informacji, zobacz Migrowanie do interfejsu API syntezy wsadowej.

Interfejs API syntezy usługi Batch może syntetyzować dużą ilość danych wejściowych tekstu (długich i krótkich) asynchronicznie. Wydawcy i platformy zawartości audio mogą tworzyć długą zawartość audio w partii. Na przykład: książki audio, artykuły z wiadomościami i dokumenty. Interfejs API syntezy wsadowej może utworzyć syntetyzowany dźwięk dłuższy niż 10 minut.

Niektóre właściwości w formacie JSON są wymagane podczas tworzenia nowego zadania syntezy wsadowej. Inne właściwości są opcjonalne. Odpowiedź syntezy wsadowej zawiera inne właściwości zapewniające informacje o stanie syntezy i wynikach. Na przykład outputs.result właściwość zawiera lokalizację plików wynikowych syntezy wsadowej z danymi wyjściowymi audio i dziennikami.

Właściwości syntezy wsadowej

Właściwości syntezy wsadowej opisano w poniższej tabeli.

Właściwości opis
createdDateTime Data i godzina utworzenia zadania syntezy wsadowej.

Ta właściwość jest tylko do odczytu.
customVoices Mapa niestandardowej nazwy głosu i jej identyfikatora wdrożenia.

Na przykład: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"}.

Możesz użyć nazwy głosu w elemecie synthesisConfig.voice (gdy inputKind jest ustawiona wartość "PlainText") lub w tekście inputs SSML (gdy jest ustawiona inputKind wartość "SSML").

Ta właściwość jest wymagana do używania niestandardowego głosu. Jeśli spróbujesz użyć niestandardowego głosu, który nie jest tutaj zdefiniowany, usługa zwróci błąd.
description Opis syntezy wsadowej.

Ta właściwość jest opcjonalna.
id Identyfikator zadania syntezy wsadowej przekazany w ścieżce.

Ta właściwość jest wymagana w ścieżce.
inputs Zwykły tekst lub SSML do zsyntetyzowania.

inputKind Gdy parametr ma wartość "PlainText", podaj zwykły tekst, jak pokazano poniżej: "inputs": [{"text": "The rainbow has seven colors."}]. Gdy właściwość jest ustawiona inputKind na "SSML", podaj tekst w języku SSML (Speech Synthesis Markup Language), jak pokazano poniżej: "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>"}].

Dołącz do 1000 obiektów tekstowych, jeśli chcesz uzyskać wiele plików wyjściowych dźwięku. Oto przykładowy tekst wejściowy, który powinien być syntetyzowany do dwóch plików wyjściowych audio: "inputs": [{"text": "synthesize this to a file"},{"text": "synthesize this to another file"}]. Jeśli properties.concatenateResult jednak właściwość jest ustawiona na true, każdy zsyntetyzowany wynik jest zapisywany w tym samym pliku wyjściowym audio.

Nie potrzebujesz oddzielnych danych wejściowych tekstowych dla nowych akapitów. W dowolnej z (do 1000) wprowadzania tekstu można określić nowe akapity przy użyciu ciągu "\r\n" (nowy wiersz). Oto przykładowy tekst wejściowy z dwoma akapitami, które powinny być syntetyzowane do tego samego pliku wyjściowego audio: "inputs": [{"text": "synthesize this to a file\r\nsynthesize this to another paragraph in the same file"}]

Nie ma limitów akapitu, ale maksymalny rozmiar ładunku JSON (w tym wszystkie dane wejściowe tekstu i inne właściwości) wynosi 2 megabajty.

Ta właściwość jest wymagana podczas tworzenia nowego zadania syntezy wsadowej. Ta właściwość nie jest uwzględniana w odpowiedzi podczas uzyskiwania zadania syntezy.
internalId Wewnętrzny identyfikator zadania syntezy wsadowej.

Ta właściwość jest tylko do odczytu.
lastActionDateTime Ostatnia data i godzina zmiany status wartości właściwości.

Ta właściwość jest tylko do odczytu.
outputs.result Lokalizacja plików wynikowych syntezy wsadowej z danymi wyjściowymi audio i dziennikami.

Ta właściwość jest tylko do odczytu.
properties Zdefiniowany zestaw opcjonalnych ustawień konfiguracji syntezy wsadowej.
properties.sizeInBytes Rozmiar danych wyjściowych dźwięku w bajtach.

Ta właściwość jest tylko do odczytu.
properties.billingDetails Liczba wyrazów, które zostały przetworzone i rozliczane przez customNeuralCharacters głosy w porównaniu neuralCharacters (wstępnie utworzone).

Ta właściwość jest tylko do odczytu.
properties.concatenateResult Określa, czy połączyć wynik. Ta opcjonalna bool wartość ("true" lub "false") jest domyślnie "false".
properties.decompressOutputFiles Określa, czy rozpakuj pliki wyników syntezy w kontenerze docelowym. Tę właściwość można ustawić tylko wtedy, gdy właściwość jest ustawiona destinationContainerUrl . Ta opcjonalna bool wartość ("true" lub "false") jest domyślnie "false".
properties.destinationContainerUrl Wyniki syntezy wsadowej można przechowywać w zapisywalnym kontenerze platformy Azure. Jeśli nie określisz identyfikatora URI kontenera z tokenem sygnatur dostępu współdzielonego (SAS ), usługa Mowa przechowuje wyniki w kontenerze zarządzanym przez firmę Microsoft. Sygnatura dostępu współdzielonego z zapisanymi zasadami dostępu nie jest obsługiwana. Po usunięciu zadania syntezy dane wynikowe również zostaną usunięte.

Ta opcjonalna właściwość nie jest uwzględniana w odpowiedzi podczas pobierania zadania syntezy.
properties.destinationPath Ścieżka prefiksu, w której można przechowywać wyniki syntezy wsadowej. Jeśli nie określisz ścieżki prefiksu, domyślna ścieżka prefiksu to YourSpeechResourceId/YourSynthesisId.

Tę opcjonalną właściwość można ustawić tylko wtedy, gdy właściwość jest ustawiona destinationContainerUrl .
properties.durationInMilliseconds Czas trwania danych wyjściowych dźwięku w milisekundach.

Ta właściwość jest tylko do odczytu.
properties.failedAudioCount Liczba danych wejściowych syntezy wsadowej w danych wyjściowych dźwięku nie powiodła się.

Ta właściwość jest tylko do odczytu.
properties.outputFormat Format wyjściowy audio.

Aby uzyskać informacje o akceptowanych wartościach, zobacz formaty danych wyjściowych audio. Domyślny format danych wyjściowych to riff-24khz-16bit-mono-pcm.
properties.sentenceBoundaryEnabled Określa, czy mają być generowane dane granic zdań. Ta opcjonalna bool wartość ("true" lub "false") jest domyślnie "false".

Jeśli zażądano danych granic zdań, odpowiedni [nnnn].sentence.json plik zostanie uwzględniony w pliku ZIP danych wyników.
properties.succeededAudioCount Liczba danych wejściowych syntezy wsadowej do danych wyjściowych dźwięku powiodła się.

Ta właściwość jest tylko do odczytu.
properties.timeToLiveInHours Czas trwania w godzinach po utworzeniu zadania syntezy, gdy wyniki syntezy zostaną automatycznie usunięte. To ustawienie opcjonalne jest 744 domyślnie (31 dni). Maksymalny czas wygaśnięcia wynosi 31 dni. Data i godzina automatycznego usuwania (w przypadku zadań syntezy ze stanem "Powodzenie" lub "Niepowodzenie") jest równa lastActionDateTime + timeToLiveInHours właściwościom.

W przeciwnym razie możesz wywołać metodę syntezy usuwania , aby usunąć zadanie wcześniej.
properties.wordBoundaryEnabled Określa, czy dane granic słów mają być generowane. Ta opcjonalna bool wartość ("true" lub "false") jest domyślnie "false".

Jeśli zażądano danych granicy wyrazów, odpowiedni [nnnn].word.json plik zostanie uwzględniony w pliku ZIP danych wyników.
status Stan przetwarzania syntezy wsadowej.

Stan powinien przechodzić z "NotStarted" na "Running", a na koniec na "Succeeded" lub "Failed".

Ta właściwość jest tylko do odczytu.
synthesisConfig Ustawienia konfiguracji używane do syntezy wsadowej zwykłego tekstu.

Ta właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.backgroundAudio Dźwięk tła dla poszczególnych danych wyjściowych dźwięku.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.backgroundAudio.fadein Czas trwania dźwięku tła zanika w milisekundach. Wartość domyślna to 0, która jest odpowiednikiem braku zanikania. Akceptowane wartości: 0 do 10000 inkluzywnego.

Aby uzyskać informacje, zobacz tabelę atrybutów w sekcji Dodawanie dźwięku w tle w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.backgroundAudio.fadeout Czas trwania zanikania dźwięku w tle w milisekundach. Wartość domyślna to 0, która jest odpowiednikiem braku zanikania. Akceptowane wartości: 0 do 10000 inkluzywnego.

Aby uzyskać informacje, zobacz tabelę atrybutów w sekcji Dodawanie dźwięku w tle w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.backgroundAudio.src Lokalizacja identyfikatora URI pliku audio w tle.

Aby uzyskać informacje, zobacz tabelę atrybutów w sekcji Dodawanie dźwięku w tle w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta właściwość jest wymagana, gdy synthesisConfig.backgroundAudio jest ustawiona.
synthesisConfig.backgroundAudio.volume Wolumin pliku audio w tle. Akceptowane wartości: 0 do 100 inkluzywnego. Domyślna wartość to 1.

Aby uzyskać informacje, zobacz tabelę atrybutów w sekcji Dodawanie dźwięku w tle w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.pitch Skok danych wyjściowych dźwięku.

Aby uzyskać informacje na temat akceptowanych wartości, zobacz tabelę dostosowywanie prosody w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.rate Szybkość danych wyjściowych dźwięku.

Aby uzyskać informacje na temat akceptowanych wartości, zobacz tabelę dostosowywanie prosody w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.role W przypadku niektórych głosów można dostosować rolę mówienia. Głos może naśladować inny wiek i płeć, ale nazwa głosu nie jest zmieniana. Na przykład męski głos może podnieść ton i zmienić intonację, aby naśladować głos kobiecy, ale nazwa głosu nie jest zmieniana. Jeśli brakuje roli lub nie jest obsługiwana dla twojego głosu, ten atrybut jest ignorowany.

Aby uzyskać informacje o dostępnych stylach na głos, zobacz style i role głosu.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.speakerProfileId Identyfikator profilu osoby mówiącej dla osobistego głosu.

Aby uzyskać informacje o dostępnych osobistych nazwach modelu podstawowego głosu, zobacz Integrowanie głosu osobistego.
Aby uzyskać informacje o sposobie uzyskiwania identyfikatora profilu osoby mówiącej, zobacz obsługa języka i głosu.

Ta właściwość jest wymagana, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.style Dla niektórych głosów można dostosować styl mówienia, aby wyrazić różne emocje, takie jak wesołość, empatia i spokój. Możesz zoptymalizować głos pod kątem różnych scenariuszy, takich jak obsługa klienta, audycja wiadomości i asystent głosowy.

Aby uzyskać informacje o dostępnych stylach na głos, zobacz style i role głosu.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy synthesisConfig.style jest ustawiona.
synthesisConfig.styleDegree Intensywność stylu mówienia. Możesz określić silniejszy lub łagodniejszy styl, aby mowa bardziej wyrazisła lub jędniejsza. Zakres akceptowanych wartości to od 0,01 do 2 włącznie. Wartość domyślna to 1, co oznacza wstępnie zdefiniowaną intensywność stylu. Minimalna jednostka to 0,01, co skutkuje niewielką tendencją do stylu docelowego. Wartość 2 powoduje podwojenie domyślnej intensywności stylu. Jeśli brakuje stopnia stylu lub nie jest obsługiwany dla twojego głosu, ten atrybut jest ignorowany.

Aby uzyskać informacje o dostępnych stylach na głos, zobacz style i role głosu.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.voice Głos, który mówi o danych wyjściowych dźwięku.

Aby uzyskać informacje o dostępnych wstępnie utworzonych głosach neuronowych, zobacz obsługa języka i głosu. Aby użyć niestandardowego głosu, należy określić prawidłowe niestandardowe mapowanie głosu i identyfikatora wdrożenia we customVoices właściwości . Aby użyć osobistego głosu, należy określić synthesisConfig.speakerProfileId właściwość .

Ta właściwość jest wymagana, gdy inputKind jest ustawiona na "PlainText"wartość .
synthesisConfig.volume Głośność danych wyjściowych dźwięku.

Aby uzyskać informacje na temat akceptowanych wartości, zobacz tabelę dostosowywanie prosody w dokumentacji języka SSML (Speech Synthesis Markup Language). Nieprawidłowe wartości są ignorowane.

Ta opcjonalna właściwość ma zastosowanie tylko wtedy, gdy inputKind jest ustawiona na "PlainText"wartość .
inputKind Wskazuje, czy inputs właściwość text powinna być zwykły tekst, czy SSML. Możliwe wartości bez uwzględniania wielkości liter to "PlainText" i "SSML". Gdy właściwość jest ustawiona inputKind na "PlainText"synthesisConfig , należy również ustawić właściwość voice.

Ta właściwość jest wymagana.

Opóźnienie syntezy wsadowej i najlepsze rozwiązania

Podczas używania syntezy wsadowej do generowania syntetyzowanej mowy należy wziąć pod uwagę związane z opóźnieniami i postępować zgodnie z najlepszymi rozwiązaniami w celu uzyskania optymalnych wyników.

Opóźnienie syntezy wsadowej

Opóźnienie syntezy wsadowej zależy od różnych czynników, w tym złożoności tekstu wejściowego, liczby danych wejściowych w partii oraz możliwości przetwarzania bazowego sprzętu.

Opóźnienie syntezy wsadowej jest następujące (w przybliżeniu):

  • Opóźnienie 50% syntetyzowanych danych wyjściowych mowy wynosi od 10 do 20 sekund.

  • Opóźnienie 95% syntetyzowanych danych wyjściowych mowy wynosi 120 sekund.

Najlepsze rozwiązania

Podczas rozważania syntezy wsadowej dla aplikacji zaleca się ocenę, czy opóźnienie spełnia twoje wymagania. Jeśli opóźnienie jest zgodne z żądaną wydajnością, synteza wsadowa może być odpowiednim wyborem. Jeśli jednak opóźnienie nie spełnia Twoich potrzeb, możesz rozważyć użycie interfejsu API w czasie rzeczywistym.

Kody stanu HTTP

Sekcja zawiera szczegółowe informacje na temat kodów odpowiedzi HTTP i komunikatów z interfejsu API syntezy wsadowej.

HTTP 200 OK

HTTP 200 OK wskazuje, że żądanie zakończyło się pomyślnie.

Utworzono protokół HTTP 201

Utworzono protokół HTTP 201 wskazuje, że żądanie syntezy wsadowej (za pośrednictwem protokołu HTTP POST) zakończyło się pomyślnie.

Błąd HTTP 204

Błąd HTTP 204 wskazuje, że żądanie zakończyło się pomyślnie, ale zasób nie istnieje. Na przykład:

  • Próbowano pobrać lub usunąć zadanie syntezy, które nie istnieje.
  • Pomyślnie usunięto zadanie syntezy.

Błąd HTTP 400

Oto przykłady, które mogą spowodować błąd 400:

  • Element outputFormat jest nieobsługiwany lub nieprawidłowy. Podaj prawidłową wartość formatu lub pozostaw outputFormat wartość pustą, aby użyć ustawienia domyślnego.
  • Liczba żądanych danych wejściowych tekstu przekroczyła limit 10 000.
  • Próbowano użyć nieprawidłowego identyfikatora wdrożenia lub niestandardowego głosu, który nie został pomyślnie wdrożony. Upewnij się, że zasób usługi Mowa ma dostęp do niestandardowego głosu, a niestandardowy głos został pomyślnie wdrożony. Należy również upewnić się, że mapowanie parametru {"your-custom-voice-name": "your-deployment-ID"} jest poprawne w żądaniu syntezy wsadowej.
  • Próbowano użyć zasobu usługi Mowa F0, ale region obsługuje tylko warstwę cenową zasobu usługi Mowa w warstwie Standardowa.

Błąd HTTP 404

Nie można odnaleźć określonej jednostki. Upewnij się, że identyfikator syntezy jest poprawny.

Błąd HTTP 429

Istnieje zbyt wiele ostatnich żądań. Każda aplikacja kliencka może przesyłać do 100 żądań na 10 sekund dla każdego zasobu usługi Mowa. Zmniejsz liczbę żądań na sekundę.

Błąd HTTP 500

Błąd wewnętrzny serwera HTTP 500 wskazuje, że żądanie nie powiodło się. Treść odpowiedzi zawiera komunikat o błędzie.

Przykład błędu HTTP

Oto przykładowe żądanie, które powoduje błąd HTTP 400, ponieważ inputs właściwość jest wymagana do utworzenia zadania.

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"

W takim przypadku nagłówki odpowiedzi obejmują HTTP/1.1 400 Bad Request.

Treść odpowiedzi przypomina następujący przykład JSON:

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

Następne kroki