Escribí este código para reproducir un audio al hacer clic en un botón, pero no puedo hacerlo funcionar. Los documentos de Google no son útiles para manejar la respuesta. Alguien puede ayudarme porfavor?
async function playVoiceover() { const url ='https://texttospeech.googleapis.com/v1/text:synthesize?key=XXXXXXX' const rawResponse = await fetch(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ 'input':{ 'ssml':`<speak>The <say-as interpret-as=\"characters\">SSML</say-as> standard <break time=\"1s\"/>is defined by the <sub alias=\"World Wide Web Consortium\">W3C</sub>.</speak>` }, 'voice':{ 'languageCode':'en-us', 'name':'en-US-Standard-B', 'ssmlGender':'MALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }) }); const content = await rawResponse.json(); const mp3 = 'data:audio/mp3;base64,'+window.atob(content.audioContent) const audio = new Audio(mp3); audio.play(); }Dejo esta respuesta como información sobre este caso para la comunidad:
ventana.atob()
El método atob() decodifica una cadena codificada en base 64.
texttospeech.googleapis.com (estructura de respuesta)
{ "audioContent": string } // Una cadena codificada en base64.
No es necesario decodificar cuando está formateando la cadena mp3 con la estructura del códec. Puedes ver una respuesta similar aquí .
Para obtener detalles adicionales sobre la respuesta de la API de texto a voz: