Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Invio di testo e ricezione di audio
Una sessione di streaming bidirezionale prevede l'apertura di una connessione, l'invio di testo e la ricezione dell'audio contemporaneamente, quindi la chiusura dello streaming quando l'input è completo. Le sezioni seguenti descrivono ogni fase in dettaglio.
Apri lo stream
L'applicazione richiama l'StartSpeechSynthesisStreamoperazione tramite l'SDK, specificando i parametri di sintesi (Engine,VoiceId, e facoltativamenteOutputFormat,LanguageCode,LexiconNames). SampleRate L'SDK stabilisce una HTTP/2 connessione e il flusso bidirezionale è pronto ad accettare eventi di input.
Invia testo
Il client invia uno o più TextEventmessaggi nel flusso di input. Ogni evento può essere inviato non appena il testo è disponibile, senza attendere che l'input completo sia pronto. Non è necessario che gli eventi di testo siano allineati con i limiti di frasi o punteggiatura. Amazon Polly riassembla il testo internamente e produce un parlato dal suono naturale indipendentemente dal modo in cui l'input viene suddiviso tra gli eventi.
Nota
Quando si utilizza SSML, ogni documento SSML deve essere contenuto in un unico documento. TextEvent Non è possibile dividere i tag SSML tra più eventi. Tuttavia, è possibile combinare eventi di testo semplice ed eventi SSML all'interno dello stesso flusso.
Lo streaming è soggetto ai seguenti limiti di tempo:
-
Durata massima dello streaming: 10 minuti. Amazon Polly chiude lo streaming dopo 10 minuti indipendentemente dall'attività. Se i tuoi contenuti richiedono più tempo, apri un nuovo stream per il testo rimanente.
-
Timeout di inattività tra eventi consecutivi: 5 secondi. Se non viene inviato alcun evento di input per 5 secondi, Amazon Polly chiude lo stream. Se la fonte di testo presenta pause superiori a 5 secondi, invia un keep-alive
TextEventcon una stringa vuota o con uno spazio vuoto per evitare il timeout.
Forzare la sintesi del testo bufferizzato con flushing
Per impostazione predefinita, Amazon Polly decide quando sintetizzare il testo nel buffer in base ai limiti del linguaggio naturale. Ciò produce la migliore qualità audio, ma significa che l'audio potrebbe non essere restituito immediatamente dopo l'invio di un. TextEvent
Flushing consente di controllare quando avviene la sintesi. Quando si esegue Flush, Amazon Polly sintetizza immediatamente tutto il testo memorizzato nel buffer fino a quel momento, indipendentemente dal fatto che il testo termini o meno in corrispondenza di un limite naturale. Ciò è utile quando la sorgente di testo si interrompe tra le sezioni logiche e desideri distribuire l'audio di ciò che è stato inviato finora.
Per svuotare, imposta il. FlushStreamConfiguration Forceparametro true su aTextEvent. Puoi anche inviare un messaggio vuoto TextEvent con il flag flush impostato per attivare la sintesi senza aggiungere nuovi contenuti.
Flushing è un compromesso. L'impostazione Force a true metà frase può influire sulla pronuncia e sull'intonazione perché il sintetizzatore non ha un contesto su quanto segue. Per ottenere i migliori risultati, consenti ad Amazon Polly di effettuare il buffering fino ai limiti naturali laddove possibile e di forzare la sintesi solo quando i requisiti di latenza lo richiedono.
Ricevi l'audio
Quando Amazon Polly sintetizza il testo, restituisce AudioEventmessaggi nel flusso di output. Ogni evento contiene una parte di dati audio. L'applicazione deve accumulare questi blocchi (ad esempio, scrivendoli in sequenza su un file o un buffer audio) per produrre l'output audio completo. Gli eventi audio possono arrivare mentre state ancora inviando eventi di testo.
Chiudi lo stream
Quando tutto il testo in input è stato inviato, il client invia un CloseStreamEvent. Amazon Polly completa l'elaborazione del testo rimanente nel buffer, invia gli eventi audio finali e restituisce un messaggio StreamClosedEventcontenente il numero totale di caratteri sintetizzati. Invia sempre un messaggio CloseStreamEvent anziché affidarti a flushing per terminare lo streaming. La chiusura assicura che tutto il testo memorizzato nel buffer venga sintetizzato e restituito.