node.js - ¿Cómo puedo cambiar la configuración grpc.max_receive_message_length en Google Cloud Text to Speech en NodeJS?
Estoy utilizando el paquete @google-cloud/text-to-speech para convertir texto a voz, usando aproximadamente este código:
import GoogleTextToSpeech, { SynthesizeSpeechRequest } from '@google-cloud/text-to-speech';
const fs = require('fs');
const path = require('path');
// ...
const request: SynthesizeSpeechRequest = {
input: { ssml }, // ssml is a valid SSML string from 0 to about 2000 chars.
voice: {
languageCode: 'en-US',
name: 'en-US-Wavenet-A',
},
audioConfig: {
audioEncoding: 'LINEAR16',
pitch: 0,
speakingRate: 1.0,
},
};
const clientConfig = JSON.parse(
fs.readFileSync(
path.join(
require.resolve('@google-cloud/text-to-speech'),
'..',
'v1',
'text_to_speech_client_config.json',
),
),
);
clientConfig.interfaces[
'google.cloud.texttospeech.v1.TextToSpeech'
].methods.SynthesizeSpeech.timeout_millis = 3000000;
const client = new GoogleTextToSpeech.TextToSpeechClient(clientConfig);
// Performs the Text-to-Speech request
const [response] = await client.synthesizeSpeech(request);
// response gets processed further
Esto funciona para nosotros y ha funcionado para nosotros durante mucho tiempo. Sin embargo, recientemente en las pruebas, notamos que a veces obtenemos un error cuando el texto se acerca a los 2000 caracteres, el error parece ser porque la respuesta de audio de Google es demasiado grande. El error se ve así:
Error: 8 RESOURCE_EXHAUSTED: Received message larger than max (5162312 vs. 4194304)Hasta donde podemos determinar, el error parece ser que, internamente, grpc está configurado para no recibir una respuesta superior a ese límite de 4 MB. Según este issue de GitHub, esta publicación en Stack Overflow, este issue de GitHub, esta publicación en Stack Overflow y este hilo de GitHub, parece que debería ser posible configurar esto en clientConfig en nuestro código para que sea -1 (ilimitado) en su lugar. El problema es que todas esas publicaciones son o bien para otro lenguaje, o no son específicas de cloud text-to-speech.
Mi pregunta de hoy es, ¿cómo puedo configurar este valor específicamente en @google-cloud/text-to-speech? Parece posible, pero también parece que voy a tener que pasar por varios obstáculos (como, quizás, construir un Canal, pasarlo a GRPC, y luego pasar esa instancia de GRPC al TextToSpeechClient), y según puedo ver, la mayoría de estas propiedades de configuración de GRPC no están listadas en la documentación. Por ejemplo, la propiedad interfaces['google.cloud.texttospeech.v1.TextToSpeech'].methods.SynthesizeSpeech.timeout_milllis es un valor que hemos actualizado exitosamente en el pasado, pero no parece estar incluida en esa documentación de lo que es posible pasar al constructor de TextToSpeechClient.
¡Cualquier ayuda es apreciada, así como los enlaces a recursos útiles sobre dónde está documentado este tipo de configuración, si existen!
¡Gracias!
Respuesta #1
Para cambiar el valor de grpc.max_receive_message_length usando NodeJS, solo tienes que pasar {'grpc.max_receive_message_length': 1} en TextToSpeechClient() con los valores que desees. Para este ejemplo, definí 1 solo para que sea más fácil mostrar que tuvo efecto. Se verá así:
const client = new GoogleTextToSpeech.TextToSpeechClient({'grpc.max_receive_message_length': 1});
Pruebas realizadas:
Respuesta #2
Max sugirió contactar con el soporte de Google o buscar en los foros de Google Cloud
