Cómo convertir voz a texto en Android
Android proporciona una potente API de conversión de texto a voz que permite a los desarrolladores agregar notificaciones de voz y otras funciones de respuesta de voz a sus aplicaciones sin necesidad de que los usuarios miren la pantalla.
OnInitListener {
TextToSpeech final privado mTextToSpeech; //objeto TTS
ConcurrentLinkedQueue final privado mBufferedMessages //MessageQueue
Contexto privado mContext;
privado booleano mIsReady; //identificador
public TextToSpeechDemo(Contexto contexto){
this.mContext=context; //obtener contexto
esto. p> p>
//Inicializar motor TTS
@Override
public void onInit(int status) {
Log.i("TextToSpeechDemo" , String .valueOf(status));
if(status==TextToSpeech.SUCCESS){
int resultado = this.mTextToSpeech.setLanguage(Locale.mBufferedMessages.clear(); // Limpiar la cola después de leer
}
}
}
Liberar recursos
liberación pública vacía () {
sincronizado (este){
this.mTextToSpeech.shutdown();
this.mTextToSpeech.shutdown();
this.mTextToSpeech.shutdown();
this.mTextToSpeech.shutdown()shutdown();
this.mIsReady=false;
}
//Actualiza la cola de mensajes o lee la voz
public void notifyNewMessage(String lanaugh){
String message=lanaugh;
sincronizado (esto){
if(este .mIsReady){
speakText(mensaje);
}else{
esto .mBufferedMessages. add(mensaje);
}
}
}
}
/leyendo el Procesamiento de voz
private void SpeakText(String message){
Log.QUEUE_ADD, params //¿Cuánto dura el intervalo<
}
}
Por supuesto, los teléfonos móviles que generalmente no admiten chino se pueden probar después de descargar el motor iFlytek TTS de Baidu.
Dado que la inicialización del motor TTS es asíncrona, los mensajes deben ponerse en cola antes de que se implemente realmente la conversión de texto a voz.
Se pueden enviar múltiples parámetros al motor TTS.
La sección anterior describió cómo determinar el flujo de audio que se utilizará para la información hablada. En este ejemplo, se utilizará la misma secuencia de audio para el sonido de notificación.
Finalmente, si está procesando varios mensajes seguidos, es mejor hacer una pausa al final de cada mensaje antes de reproducir el siguiente. Al hacerlo, le indicará claramente al usuario dónde termina y comienza el mensaje.