hogar - ventanas
Reconocimiento de voz ultrarrápido sin servidores usando un ejemplo real. El mejor programa ruso de reconocimiento de voz Reconocimiento de voz sin conexión cómo desactivarlo

Actualizado: lunes 31 de julio de 2017

¿Qué tiene que ver la idea semifantástica de hablar con un ordenador con la fotografía profesional? Casi ninguno, a menos que seas un fanático de la idea del desarrollo sin fin de todo el entorno técnico del hombre. Imagina por un momento que estás dando órdenes de voz a tu cámara para que cambie la distancia focal y haga una corrección de exposición de medio paso más. El control remoto de la cámara ya se ha implementado, pero allí debe presionar los botones en silencio, ¡pero aquí hay una cámara auditiva!

Se ha convertido en una tradición citar alguna película de ciencia ficción como ejemplo de comunicación de voz entre una persona y una computadora, por ejemplo “2001: Odisea en el espacio” del director Stanley Kubrick. Allí, el ordenador de a bordo no sólo mantiene un diálogo significativo con los astronautas, sino que también puede leer los labios como un sordo. En otras palabras, la máquina ha aprendido a reconocer el habla humana sin errores. Quizás a algunos el control remoto por voz de la cámara les parezca superfluo, pero a muchos les gustaría esta frase "Derribanos, nena" y la foto de toda la familia con el fondo de una palmera está lista.

Bueno, entonces rindí homenaje a la tradición y soñé un poco. Pero, hablando desde el corazón, este artículo fue difícil de escribir, y todo comenzó con un regalo en forma de un teléfono inteligente con sistema operativo Android 4. Este modelo de HUAWEI U8815 cuenta con una pequeña pantalla táctil de cuatro pulgadas y un teclado en pantalla. Es un poco inusual escribir en él, pero resulta que no es particularmente necesario. (imagen01)

1. Reconocimiento de voz en un teléfono inteligente con sistema operativo Android

Mientras probaba un juguete nuevo, noté un gráfico de un micrófono en la barra de búsqueda. Google y en el teclado en Notas. Antes no me interesaba lo que significaba este símbolo. tuve conversaciones en Skype y escribí letras en el teclado. Esto es lo que hacen la mayoría de los usuarios de Internet. Pero como me explicaron después, en el buscador Google Se agregó la búsqueda por voz en ruso y aparecieron programas que permiten dictar mensajes cortos cuando se usa un navegador. "Cromo".

Dije una frase de tres palabras, el programa las identificó y las mostró en una celda con fondo azul. Aquí había algo de qué sorprenderse, porque todas las palabras estaban escritas correctamente. Si haces clic en esta celda, la frase aparece en el campo de texto del bloc de notas de Android. Entonces dije un par de frases más y le envié un mensaje al asistente por SMS.


2. Una breve historia de los programas de reconocimiento de voz.

No fue un descubrimiento para mí que los avances modernos en el campo del control por voz permiten dar órdenes a electrodomésticos, automóviles y robots. El modo de comando se introdujo en versiones anteriores de Windows, OS/2 y Mac OS. Me he encontrado con programas parlantes, pero ¿de qué sirven? Quizás sea mi peculiaridad que me resulta más fácil hablar que escribir en un teclado, pero en un teléfono móvil no puedo escribir nada en absoluto. Tienes que anotar contactos en una computadora portátil con un teclado normal y transferirlos mediante un cable USB. Pero simplemente hablar por un micrófono y hacer que la computadora escriba el texto sin errores fue un sueño para mí. La atmósfera de desesperanza se mantuvo gracias a las discusiones en los foros. En todos ellos había un pensamiento tan triste:

“Sin embargo, en realidad, hasta la fecha prácticamente no existen programas para el reconocimiento de voz real (e incluso en ruso) y, obviamente, no se crearán pronto. Además, ni siquiera se ha resuelto del todo el problema inverso del reconocimiento: la síntesis del habla, que parece ser mucho más sencilla que el reconocimiento. (ComputerPress No. 12, 2004)

“Todavía no existen programas normales de reconocimiento de voz (no sólo en ruso), porque la tarea es bastante difícil para un ordenador. Y lo peor es que el mecanismo de reconocimiento de palabras por parte de los humanos aún no se ha implementado, por lo que no hay nada de qué empezar a la hora de crear programas de reconocimiento”. (Otro debate en el foro).

Al mismo tiempo, las revisiones de los programas de entrada de texto por voz en inglés indicaron claros éxitos. Por ejemplo, IBM ViaVoice 98 Edición ejecutiva Tenía un vocabulario básico de 64.000 palabras y la posibilidad de añadir la misma cantidad de tus propias palabras. El porcentaje de reconocimiento de palabras sin entrenamiento del programa fue de alrededor del 80% y con el trabajo posterior con un usuario específico alcanzó el 95%.

Entre los programas de reconocimiento del idioma ruso, cabe destacar "Gorynych", una adición al Dragon Dictate 2.5 en inglés. Sobre la búsqueda y luego sobre la "batalla con los cinco Gorynych" les contaré en la segunda parte de la reseña. El primero que encontré fue el "Dragón Inglés".

3. Programa de reconocimiento continuo de voz “Dragon Naturally Speaking”

Versión moderna del programa de la empresa. "Matiz" Terminé con un viejo amigo mío del Instituto de Lenguas Extranjeras de Minsk. Lo trajo de un viaje al extranjero y lo compró pensando que podría ser una “secretaria informática”. Pero algo no funcionó y el programa permaneció en el portátil, casi olvidado. Debido a la falta de una experiencia clara, tuve que acudir yo mismo a ver a mi amigo. Toda esta larga introducción es necesaria para una correcta comprensión de las conclusiones que he extraído.

El nombre completo de mi primer dragón fue: . El programa está en inglés y todo es claro incluso sin manual. El primer paso es crear un perfil de un usuario específico para determinar las características sonoras de las palabras en su interpretación. Eso es lo que hice: la edad, el país y las características de pronunciación del hablante son importantes. Mi elección es la siguiente: entre 22 y 54 años, inglés británico, pronunciación estándar. A continuación hay varias ventanas donde configura su micrófono. (imagen04)

El siguiente paso para programas serios de reconocimiento de voz es el entrenamiento de las características de pronunciación de una persona en particular. Se le pide que elija la naturaleza del texto: mi elección es una breve instrucción de dictado, pero también puede "encargar" una historia humorística.

La esencia de esta etapa de trabajar con el programa es extremadamente simple: el texto se muestra en la ventana, con una flecha amarilla encima. Cuando se pronuncia correctamente, la flecha se mueve a través de las frases y en la parte inferior hay una barra de progreso del entrenamiento. Prácticamente había olvidado mi inglés conversacional, por lo que progresé con dificultad. El tiempo también era limitado: el ordenador no era mío y tuve que interrumpir el entrenamiento. Pero una amiga dijo que se hizo la prueba en menos de media hora. (imagen05)

Negándome a permitir que el programa adaptara mi pronunciación, fui a la ventana principal y abrí el editor de texto incorporado. Pronunció palabras individuales de algunos textos que encontró en la computadora. El programa imprimió las palabras que dijo correctamente y reemplazó las que dijo mal con algo "inglés". Habiendo pronunciado claramente el comando “borrar línea” en inglés, el programa lo ejecutó. Esto significa que leo los comandos correctamente y el programa los reconoce sin formación previa.

Pero para mí era importante cómo escribe este “dragón” en ruso. Como entendiste por la descripción anterior, al entrenar el programa, solo puedes seleccionar texto en inglés, simplemente no hay ruso allí; Está claro que no será posible entrenar el reconocimiento de voz en ruso. En la siguiente foto puedes ver qué frase escribió el programa al pronunciar la palabra rusa “Hola”. (imagen06)

El resultado de la conversación con el primer dragón resultó un poco cómico. Si lee atentamente el texto en el sitio web oficial, podrá ver la "especialización" en inglés de este producto de software. Además, al cargar, leemos "inglés" en la ventana del programa. Entonces, ¿por qué era necesario todo esto? Está claro que la culpa la tienen los foros y los rumores...

Pero también hay una experiencia útil. Una amiga mía pidió ver el estado de su computadora portátil. Poco a poco empezó a trabajar. Esto no es sorprendente: la partición del sistema tenía solo un 5% de espacio libre. Mientras eliminaba programas innecesarios, vi que la versión oficial ocupaba más de 2,3 GB. Esta cifra nos será útil más adelante. (imagen.07)



Resultó que reconocer el habla rusa no era una tarea trivial. En Minsk logré encontrar a “Gorynych” gracias a un amigo. Buscó el disco durante mucho tiempo entre sus viejos escombros y, según él, esta es la publicación oficial. El programa se instaló instantáneamente y descubrí que su diccionario contiene 5000 palabras en ruso más 100 comandos y 600 palabras en inglés más 31 comandos.

Primero necesitas configurar el micrófono, lo cual hice yo. Luego abrí el diccionario y agregué la palabra "examen" porque no estaba en el diccionario del programa. Intenté hablar clara y monótonamente. Finalmente, abrí el programa Gorynych Pro 3.0, encendí el modo de dictado y recibí esta lista de "palabras que suenan cercanas". (imagen.09)

El resultado me desconcertó, porque difería claramente para peor del funcionamiento de un teléfono inteligente Android, y decidí probar otros programas de " Tienda en línea de Google Chrome". Y dejé para más adelante tratar con las “serpientes gorynych”. Pensé que era aplazamiento acción en el espíritu ruso original

5. Capacidades de voz de Google

Para trabajar con voz en una computadora normal con Windows, deberá instalar un navegador Google Chrome. Si lo está utilizando en línea, puede hacer clic en el enlace de la tienda de software en la parte inferior derecha. Allí, completamente gratis, encontré dos programas y dos extensiones para la entrada de texto por voz. Los programas se llaman "Bloc de notas de voz" Y "Voicenot - voz a texto". Después de la instalación, se pueden encontrar en la pestaña "Aplicaciones" tu navegador "Cromo". (imagen 10)

Las extensiones se llaman "Palabra clave de búsqueda por voz de Google (Beta) 0.1.0.5" Y "Ingreso de texto por voz - Speechpad.ru 5.4". Después de la instalación, se pueden desactivar o eliminar en la pestaña "Extensiones".(imagen 11)

Nota de voz. En la pestaña de la aplicación en el navegador Chrome, haga doble clic en el icono del programa. Se abrirá un cuadro de diálogo como en la imagen de abajo. Al hacer clic en el icono del micrófono, pronuncia frases cortas en el micrófono. El programa transmite sus palabras al servidor de reconocimiento de voz y escribe el texto en la ventana. Todas las palabras y frases que se muestran en la ilustración se escribieron la primera vez. Evidentemente, este método sólo funciona cuando hay una conexión a Internet activa. (imagen. 12)

Bloc de notas de voz. Si inicia el programa desde la pestaña de aplicaciones, se abrirá una nueva pestaña de la página de Internet Speechpad.ru. Hay instrucciones detalladas sobre cómo utilizar este servicio y un formulario compacto. Esto último se muestra en la siguiente ilustración. (imagen 13)

La entrada de voz Texto le permite completar campos de texto en páginas de Internet usando su voz. Por ejemplo, fui a mi página. "Google+". En el campo de entrada de mensaje nuevo, haga clic derecho y seleccione "Discurso". La ventana de entrada rosa indica que puedes dictar tu texto. (imagen. 14)

Búsqueda por voz de Google le permite buscar por voz. Cuando instalas y activas esta extensión, aparece un símbolo de micrófono en la barra de búsqueda. Al presionarlo aparecerá un símbolo en un gran círculo rojo. Simplemente diga su frase de búsqueda y aparecerá en los resultados de búsqueda. (imagen 15)

Nota importante: para que el micrófono funcione con las extensiones de Chrome, debe permitir el acceso al micrófono en la configuración de su navegador. Está deshabilitado de forma predeterminada por razones de seguridad. Ir a Configuración→Información personal→Configuración de contenido. (Para acceder a todas las configuraciones al final de la lista, haga clic en Mostrar configuración avanzada). Se abrirá un cuadro de diálogo Configuración del contenido de la página. Seleccione un elemento en la lista Multimedia→micrófono.

6. Resultados de trabajar con programas rusos de reconocimiento de voz.

Un poco de experiencia en el uso de programas de entrada de texto por voz ha demostrado una excelente implementación de esta función en los servidores de una empresa de Internet. Google. Sin ningún entrenamiento previo, las palabras se reconocen correctamente. Esto indica que el problema del reconocimiento de voz en ruso se ha resuelto.

Ahora podemos decir que el resultado de los desarrollos. Google será un nuevo criterio para evaluar productos de otros fabricantes. Me gustaría que el sistema de reconocimiento funcionara sin conexión, sin acceder a los servidores de la empresa; es más cómodo y rápido. Pero se desconoce cuándo se lanzará un programa independiente para trabajar con un flujo continuo de habla rusa. Sin embargo, cabe suponer que, con la posibilidad de formarse, esta “creación” se convertirá en un verdadero avance.

Programas de desarrolladores rusos. "Gorynych", "Dictógrafo" Y "Combate" Entraré en detalles en la segunda parte de esta revisión. Este artículo se escribió muy lentamente porque la búsqueda de discos originales ahora es difícil. Por el momento ya tengo todas las versiones de los motores rusos de reconocimiento de voz a texto excepto “Combat 2.52”. Ninguno de mis amigos o colegas tiene este programa, y ​​yo solo tengo algunas críticas elogiosas en los foros. Es cierto que había una opción tan extraña: descargar "Combat" por SMS, pero no me gusta. (imagen16)


Un breve videoclip le mostrará cómo funciona el reconocimiento de voz en un teléfono inteligente con sistema operativo Android. La peculiaridad de la escritura por voz es la necesidad de conectarse a los servidores de Google. Así debería funcionar tu Internet

Este teléfono tiene reconocimiento de voz o entrada de voz, pero sólo funciona a través de Internet, conectándose a los servicios de Google. Pero se puede enseñar a un teléfono a reconocer el habla sin Internet; veremos cómo habilitar el reconocimiento del idioma ruso en desconectado. Para que este método funcione debes tener dos aplicaciones instaladas Búsqueda por voz Y Búsqueda de Google, aunque estos programas ya están presentes en el firmware de fábrica.

Para firmware

Vaya a la configuración de su teléfono y seleccione

Seleccione el idioma ruso y descárguelo.

Para firmware 2.8B

En el nuevo firmware, el elemento del menú " Reconocimiento de voz sin conexión" ausente.

Si tenía paquetes sin conexión instalados antes de la actualización del firmware y no los borró (restableció la configuración) durante la actualización, entonces deberían haberse conservado. De lo contrario, tendrás que volver al firmware. 2.2 , instale paquetes de voz y solo entonces actualice el sistema a 2,8 mil millones.

Para dispositivos Rev.B

Instalamos la actualización mediante recovery y disfrutamos del reconocimiento de voz en oyline.

2. Descargue la base de datos de habla rusa y cópiela en la tarjeta SD.

Descargar Russian_offline.zip 1301

3. Ingrese a la recuperación manteniendo presionado (Volumen + y Encendido) con el teléfono apagado.

4. Seleccione Aplicar actualización desde almacenamiento externo y seleccione el archivo descargado.

) utilizando un ejemplo real de Hello World de control de electrodomésticos.
¿Por qué electrodomésticos? Sí, porque gracias a un ejemplo así se puede apreciar que velocidad y precisión que se puede lograr mediante el uso completamente local reconocimiento de voz sin servidores como Google ASR o Kit de discurso Yandex.
También adjunto al artículo todo el código fuente del programa y el propio ensamblado para Android.

¿Por qué de repente?

Recientemente me encontré con esto y le pregunté al autor por qué quería utilizar el reconocimiento de voz basado en servidor para su programa (en mi opinión, esto era innecesario y generó algunos problemas). Con ese fin, ¿podría describir con más detalle el uso de métodos alternativos para proyectos donde no hay necesidad de reconocer nada y el diccionario consta de un conjunto finito de palabras? E incluso con un ejemplo de aplicación práctica...

¿Por qué necesitamos algo más además de Yandex y Google?

Para esa “aplicación tan práctica” elegí el tema control por voz para hogar inteligente.
¿Por qué exactamente este ejemplo? Porque muestra varias ventajas del reconocimiento de voz completamente local sobre el reconocimiento mediante soluciones en la nube. A saber:
  • Velocidad- No dependemos de servidores y por tanto no dependemos de su disponibilidad, ancho de banda, etc. factores
  • Exactitud- nuestro motor funciona sólo con el diccionario que interesa a nuestra aplicación, aumentando así la calidad del reconocimiento
  • Precio- no tenemos que pagar por cada solicitud al servidor
  • Activación de voz- como beneficio adicional a los primeros puntos - podemos "escuchar la transmisión" constantemente sin desperdiciar nuestro tráfico y sin cargar los servidores

Nota

Permítanme hacer una reserva de inmediato: estas ventajas pueden considerarse ventajas. sólo para una determinada clase de proyectos, Dónde estamos lo sabemos con seguridad de antemano, con qué diccionario y con qué gramática operará el usuario. Es decir, cuando no necesitamos reconocer texto arbitrario (por ejemplo, un mensaje SMS o una consulta de búsqueda). De lo contrario, el reconocimiento de la nube es indispensable.

¡Para que Android pueda reconocer la voz sin Internet!
Sí, sí... Sólo en JellyBean. Y sólo desde medio metro, no más. Y este reconocimiento es el mismo dictado, sólo que utilizando un modelo mucho más pequeño. Por lo que tampoco podemos gestionarlo ni configurarlo. Y se desconoce qué nos devolverá la próxima vez. ¡Aunque es perfecto para SMS!

qué hacemos?

Implementaremos un mando a distancia por voz para electrodomésticos, que funcionará de forma precisa y rápida, desde unos pocos metros e incluso en smartphones, tablets y relojes Android baratos, cutres y muy económicos.
La lógica será sencilla pero muy práctica. Activamos el micrófono y decimos uno o más nombres de dispositivos. La aplicación los reconoce y los enciende y apaga según el estado actual. O recibe de ellos una fortuna y la pronuncia con una agradable voz femenina. Por ejemplo, la temperatura actual de la habitación.

Abundan las aplicaciones prácticas

Por la mañana, sin abrir los ojos, golpeaste la pantalla del teléfono inteligente en la mesita de noche con la palma de la mano y ordenaste "¡Buenos días!" - comienza el guión, la cafetera se enciende y tararea, se escucha una música agradable, se abren las cortinas.
Colguemos un teléfono inteligente barato (2 mil, no más) en la pared de cada habitación. Volvemos a casa después del trabajo y ordenamos al vacío “¡Smart Home! ¡Luces, televisión! - No creo que sea necesario decir qué pasará después.

Transcripciones



La gramática describe lo que lo que el usuario puede decir. Para que Pocketsphinx lo sepa, Cómoél la pronunciará, es necesario que cada palabra de la gramática escriba cómo suena en el modelo de lenguaje correspondiente. Eso es transcripción cada palabra. Se llama diccionario.

Las transcripciones se describen utilizando una sintaxis especial. Por ejemplo:
inteligente uu m n ay j house d oo m

En principio, nada complicado. Una vocal doble en la transcripción indica acento. Una consonante doble es una consonante suave seguida de una vocal. Todas las combinaciones posibles para todos los sonidos del idioma ruso.

Está claro que no podemos describir de antemano todas las transcripciones de nuestra aplicación, porque no sabemos de antemano los nombres que el usuario le dará a sus dispositivos. Por lo tanto, generaremos dichas transcripciones "sobre la marcha" de acuerdo con algunas reglas de la fonética rusa. Para hacer esto, puede implementar la siguiente clase PhonMapper, que puede recibir una cadena como entrada y generar la transcripción correcta para ella.

Activación de voz

Esta es la capacidad del motor de reconocimiento de voz de "escuchar la transmisión" todo el tiempo para reaccionar a una frase (o frases) predeterminadas. Al mismo tiempo, se descartarán todos los demás sonidos y palabras. Esto no es lo mismo que describir gramática y simplemente encender el micrófono. No presentaré aquí la teoría de esta tarea ni la mecánica de su funcionamiento. Permítanme decirles que recientemente los programadores que trabajan en Pocketsphinx implementaron dicha función y ahora está disponible de fábrica en la API.

Definitivamente vale la pena mencionar una cosa. Para una frase de activación, no solo necesita especificar la transcripción, sino también seleccionar la adecuada. valor umbral de sensibilidad. Un valor demasiado pequeño dará lugar a muchos falsos positivos (esto es cuando no dijiste la frase de activación, pero el sistema la reconoce). Y demasiado alto: a la inmunidad. Por lo tanto, esta configuración es de particular importancia. Rango aproximado de valores: de 1e-1 a 1e-40 dependiendo de la frase de activación.

Activación del sensor de proximidad

Esta tarea es específica de nuestro proyecto y no está directamente relacionada con el reconocimiento. El código se puede ver directamente en la actividad principal.
ella implementa SensorEventoEscucha y en el momento de acercarse (el valor del sensor es inferior al máximo) enciende el temporizador, comprobando después de un cierto retraso si el sensor aún está bloqueado. Esto se hace para eliminar falsos positivos.
Cuando el sensor no se vuelve a bloquear, detenemos el reconocimiento y obtenemos el resultado (ver descripción a continuación).

Empecemos el reconocimiento.

Pocketsphinx proporciona una API conveniente para configurar y ejecutar el proceso de reconocimiento. estas son las clases Reconocimiento de espectros Y Configuración del reconocimiento de voz.
Así es como se ve la configuración y el lanzamiento del reconocimiento:

PhonMapper phonMapper = new PhonMapper(getAssets().open("dict/ru/hotwords")); Gramática gramática = nueva gramática (nombres, phonMapper); gramática.addWords(palabra activa); Archivos de datos archivos de datos = new Archivos de datos(getPackageName(), "ru"); Archivo hmmDir = nuevo archivo(dataFiles.getHmm()); Archivo dict = nuevo archivo(dataFiles.getDict()); Archivo jsgf = nuevo archivo(dataFiles.getJsgf()); copiarAssets(hmmDir); saveFile(jsgf, gramática.getJsgf()); saveFile(dict, gramática.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, palabra activa); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Aquí primero copiamos todos los archivos necesarios al disco (Pocketpshinx requiere que un modelo acústico, una gramática y un diccionario con transcripciones estén en el disco). Luego se configura el propio motor de reconocimiento. Se indican las rutas a los archivos del modelo y del diccionario, así como algunos parámetros (umbral de sensibilidad para la frase de activación). A continuación se configura la ruta al archivo con la gramática, así como la frase de activación.

Como puede ver en este código, un motor está configurado para el reconocimiento tanto de gramática como de frases de activación. ¿Por qué se hace esto? Para que podamos cambiar rápidamente entre lo que necesitamos reconocer actualmente. Así es como se ve iniciar el proceso de reconocimiento de la frase de activación:

MRecognizer.startListening(KWS_SEARCH);
Y así es como se reconoce el habla según una gramática determinada:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
El segundo argumento (opcional) es el número de milisegundos después de los cuales el reconocimiento finalizará automáticamente si nadie dice nada.
Como puedes ver, puedes usar solo un motor para resolver ambos problemas.

Cómo obtener el resultado del reconocimiento

Para obtener el resultado del reconocimiento, también debe especificar un detector de eventos que implemente la interfaz ReconocimientoOyente.
Tiene varios métodos que son llamados por Pocketsphinx cuando ocurre uno de los eventos:
  • en el comienzo del discurso- el motor escuchó algún sonido, tal vez era habla (o tal vez no)
  • al final del discurso- el sonido termina
  • enResultadoPartial- hay resultados de reconocimiento intermedios. Para una frase de activación, esto significa que funcionó. Argumento Hipótesis
  • enResultado- el resultado final del reconocimiento. Este método se llamará después de llamar al método. detener en Reconocedor de voz. Argumento Hipótesis contiene datos de reconocimiento (cadena y puntuación)

Al implementar los métodos onPartialResult y onResult de una forma u otra, puede cambiar la lógica de reconocimiento y obtener el resultado final. Así es como se hace en nuestra aplicación:

@Override public void onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Override public void onPartialResult(Hipótesis de hipótesis) ( if (hypothesis == null) return; String text = hipótesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) else ( Log.d(TAG, text); ) ) @Override public void onResult(hipótesis de hipótesis) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); texto de cadena = hipótesis!= nulo? hipótesis.getHypstr(): nulo; Log.d(TAG , "onResult " + texto); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) (if (texto! = nulo) ( Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); proceso(texto ) mRecognizer.startListening(KWS_SEARCH);

Cuando recibimos el evento onEndOfSpeech, y si al mismo tiempo reconocemos el comando a ejecutar, entonces debemos detener el reconocimiento, después de lo cual se llamará a onResult inmediatamente.
En onResult debe verificar lo que se acaba de reconocer. Si se trata de un comando, debe iniciarlo para su ejecución y cambiar el motor para que reconozca la frase de activación.
En onPartialResult solo nos interesa reconocer la frase de activación. Si lo detectamos, iniciamos inmediatamente el proceso de reconocimiento de comandos. Así es como se ve:

StartRecognition() vacío sincronizado privado ( if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.MAX_VOLUME).startTone(ToneGenerator. TONE_CDMA_PIP, 200); post(400, new Runnable() ( @Override public void run() ( mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, 3000); Log.d(TAG, "Escuchar comandos"); post(4000, mStopRecognitionCallback); ) )); )
Aquí primero reproducimos una pequeña señal para notificar al usuario que lo hemos escuchado y estamos listos para su comando. Durante este tiempo, el micrófono debe estar apagado. Por lo tanto, iniciamos el reconocimiento después de un breve tiempo de espera (un poco más que la duración de la señal, para no escuchar su eco). También inicia un hilo que detendrá forzosamente el reconocimiento si el usuario habla durante demasiado tiempo. En este caso son 3 segundos.

Cómo convertir cadenas reconocidas en comandos

Bueno, todo aquí es específico para una aplicación en particular. En el caso del ejemplo simple, simplemente extraemos los nombres de los dispositivos de la línea, buscamos el dispositivo deseado y cambiamos su estado mediante una solicitud HTTP al controlador doméstico inteligente, o informamos su estado actual (como en el caso de un termostato). Esta lógica se puede ver en la clase Controlador.

Cómo sintetizar el habla

La síntesis de voz es la operación inversa del reconocimiento. Aquí es al revés: debes convertir una línea de texto en voz para que el usuario pueda escucharla.
En el caso del termostato, tenemos que hacer que nuestro dispositivo Android diga la temperatura actual. Usando la API Texto a voz Esto es bastante fácil de hacer (gracias a Google por el maravilloso TTS femenino para el idioma ruso):

Hablar vacío privado (texto de cadena) ( sincronizado (mSpeechQueue) ( ​​​​mRecognizer.stop(); mSpeechQueue.add(texto); HashMap parámetros = nuevo HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "verdadero"); mTextToSpeech.speak(texto, TextToSpeech.QUEUE_ADD, parámetros); ) )

Probablemente diré algo banal, pero antes del proceso de síntesis, es necesario desactivar el reconocimiento. En algunos dispositivos (por ejemplo, todos los dispositivos Samsung), generalmente es imposible escuchar el micrófono y sintetizar algo al mismo tiempo.
El final de la síntesis de voz (es decir, el final del proceso de lectura de texto mediante un sintetizador) se puede rastrear en el oyente:

TextToSpeech.OnUtteranceCompletedListener final privado mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String utteranceId) ( sincronizado (mSpeechQueue) ( ​​​​mSpeechQueue.poll(); if (mSpeechQueue.isEmpty()) ( mRecognizer.startListening ( KWS_BÚSQUEDA) ; ) ) ) );

En él, simplemente verificamos si hay algo más en la cola de síntesis y habilitamos el reconocimiento de frases de activación si no hay nada más.

¿Y eso es todo?

¡Sí! Como puede ver, reconocer el habla de forma rápida y eficaz directamente en el dispositivo no es nada difícil, gracias a la presencia de proyectos tan maravillosos como Pocketsphinx. Proporciona una API muy conveniente que se puede utilizar para resolver problemas relacionados con el reconocimiento de comandos de voz.

En este ejemplo, hemos asociado el reconocimiento a una tarea completamente específica: control por voz de dispositivos domésticos inteligentes. Gracias al reconocimiento local, logramos una velocidad muy alta y minimizamos los errores.
Está claro que el mismo código se puede utilizar para otras tareas relacionadas con la voz. No tiene por qué ser una casa inteligente.

  • control de voz
  • motor de voz
  • Agregar etiquetas

    Ningún programa puede reemplazar completamente el trabajo manual de transcribir discursos grabados. Sin embargo, existen soluciones que pueden acelerar y facilitar significativamente la traducción de voz a texto, es decir, simplificar la transcripción.

    La transcripción es la grabación de un archivo de audio o vídeo en forma de texto. Hay tareas remuneradas en Internet, cuando al intérprete se le paga una cierta cantidad de dinero por transcribir el texto.

    La traducción de voz a texto es útil

    • estudiantes para traducir conferencias de audio o video grabadas a texto,
    • blogueros que ejecutan sitios web y blogs,
    • escritores, periodistas para escribir libros y textos,
    • empresarios de la información que necesitan un texto después de su webinar, discurso, etc.,
    • personas que tienen dificultades para escribir: pueden dictar una carta y enviársela a familiares o amigos,
    • otras opciones.

    Describiremos las herramientas más efectivas disponibles en PC, aplicaciones móviles y servicios en línea.

    1 Sitio web discursopad.ru

    Este es un servicio en línea que le permite traducir voz a texto utilizando el navegador Google Chrome. El servicio funciona con un micrófono y archivos ya preparados. Eso sí, la calidad será mucho mayor si utilizas un micrófono externo y dictas tú mismo. Sin embargo, el servicio hace un buen trabajo incluso con vídeos de YouTube.

    Haga clic en "Habilitar grabación", responda la pregunta sobre "Usar un micrófono"; para hacer esto, haga clic en "Permitir".

    Las largas instrucciones sobre el uso del servicio se pueden contraer haciendo clic en el botón 1 en la Fig. 3. Podrás deshacerte de la publicidad completando un simple registro.

    Arroz. 3. Servicio de bloc de notas

    El resultado final es fácil de editar. Para hacer esto, debe corregir manualmente la palabra resaltada o dictarla nuevamente. Los resultados del trabajo se guardan en su cuenta personal y también se pueden descargar a su computadora.

    Lista de lecciones en video sobre cómo trabajar con el panel de voz:

    Puedes transcribir videos de Youtube o desde tu computadora, sin embargo, necesitarás un mezclador, más detalles:

    Vídeo "transcripción de audio"

    El servicio funciona en siete idiomas. Hay un pequeño inconveniente. Se basa en el hecho de que si es necesario transcribir un archivo de audio terminado, su sonido se escucha a través de los parlantes, lo que crea una interferencia adicional en forma de eco.

    2 Servicio dictado.io

    Un maravilloso servicio en línea que le permite traducir voz a texto de forma gratuita y sencilla.

    Arroz. 4. Servicio de dictado.io

    1 en la figura. 4 – Se puede seleccionar el idioma ruso al final de la página. En el navegador Google Chrome, se selecciona el idioma, pero por alguna razón en Mozilla no existe esa opción.

    Cabe destacar que se ha implementado la capacidad de guardar automáticamente el resultado final. Esto evitará la eliminación accidental como resultado de cerrar una pestaña o un navegador. Este servicio no reconoce archivos terminados. Funciona con micrófono. Debe nombrar signos de puntuación al dictar.

    El texto se reconoce bastante correctamente, no hay errores ortográficos. Puede insertar signos de puntuación usted mismo desde el teclado. El resultado final se puede guardar en su computadora.

    3 altavoz real

    Este programa te permite traducir fácilmente el habla humana a texto. Está diseñado para funcionar en diferentes sistemas: Windows, Android, Linux, Mac. Con su ayuda, puede convertir el habla escuchada en un micrófono (por ejemplo, puede integrarse en una computadora portátil), así como grabarla en archivos de audio.

    Puede comprender 13 idiomas del mundo. Existe una versión beta del programa que funciona como un servicio online:

    Debe seguir el enlace de arriba, seleccionar el idioma ruso, cargar su archivo de audio o video en el servicio en línea y pagar por su transcripción. Después de la transcripción, puede copiar el texto resultante. Cuanto más grande sea el archivo para transcripción, más tiempo llevará procesarlo, más detalles:

    En 2017 existía una opción de transcripción gratuita usando RealSpeaker, pero en 2018 ya no existe tal opción. Es muy confuso que el archivo transcrito esté disponible para que todos los usuarios lo descarguen; tal vez esto se mejore;

    Los contactos del desarrollador (VKontakte, Facebook, Youtube, Twitter, correo electrónico, teléfono) del programa se pueden encontrar en la página de su sitio web (más precisamente, en el pie de página del sitio):

    4 registrador de discursos

    Una alternativa a la aplicación anterior para dispositivos móviles con Android. Disponible gratis en la tienda de aplicaciones:

    El texto se edita automáticamente y se añaden signos de puntuación. Muy conveniente para dictarse notas o hacer listas. Como resultado, el texto tendrá una calidad muy decente.

    5 Dictado del Dragón

    Esta es una aplicación que se distribuye de forma gratuita para dispositivos móviles de Apple.

    El programa puede funcionar con 15 idiomas. Le permite editar el resultado y seleccionar las palabras deseadas de la lista. Es necesario pronunciar claramente todos los sonidos, no hacer pausas innecesarias y evitar la entonación. A veces hay errores en las terminaciones de las palabras.

    Los propietarios utilizan la aplicación Dragon Dictation, por ejemplo, para dictar una lista de compras en una tienda mientras se desplazan por el apartamento. Cuando llego allí, puedo mirar el texto de la nota y no tengo que escuchar.

    Cualquiera que sea el programa que utilice en su práctica, esté preparado para comprobar los resultados y hacer ciertos ajustes. Ésta es la única manera de conseguir un texto impecable y sin errores.

    También servicios útiles:

    Reciba los últimos artículos sobre conocimientos informáticos directamente en su bandeja de entrada.
    Ya mas 3.000 suscriptores

    .

     


    Leer:



    ¿Qué es un SSD y cómo instalarlo?

    ¿Qué es un SSD y cómo instalarlo?

    El rendimiento y la vida útil de una SSD dependen principalmente de la memoria flash NAND y del firmware del controlador. Son los componentes principales...

    Cómo poner acento en una letra en Word

    Cómo poner acento en una letra en Word

    Cuando trabajes en Word, un día tendrás que enfrentarte a la necesidad de agregar un acento. Por supuesto, puedes resaltar la vocal acentuada en negrita...

    ¿Cómo convertir imágenes a formato PNG?

    ¿Cómo convertir imágenes a formato PNG?

    El formato de imagen JPG tiene un ratio de compresión mayor que el PNG, por lo que las imágenes con esta extensión tienen menos peso. Para reducir...

    Problemas técnicos y sus soluciones v.

    Problemas técnicos y sus soluciones v.

    Bien hecho, espero que ayude. De hecho, Blockhead se ha mantenido establecido desde los días de OCO... Los buenos eruditos están en estrecho contacto con el universo...

    imagen-feed RSS