
No hace mucho tiempo, presenté un bot de chat sintáctico llamado Vanya Razumny (
"Creación de IA usando el método glock cuzdra. Odisea inteligente" ). La siguiente etapa obvia, que, como otros creadores de inteligencia artificial, quería atravesar, darle voz a la creación. Parecería más fácil?
Sin embargo, tuve que sufrir. No fue posible resolver algunos problemas, ciertamente debido al amateurismo. Sin embargo, dudo que los profesionales estén interesados en resolver problemas relacionados. Esto no es interesante para nadie, por lo que no quería. Tenía la esperanza de sujetar rápidamente el sonido y pasar a ideas posteriores ...
Pero lo primero es lo primero.
(Estoy escribiendo con la esperanza de que mis sufrimientos en el campo de la actuación de voz ayuden a alguien de mi tipo de amantes. Esta publicación es inútil para el mejor bisonte).
Está claro que la tarea de puntuación se divide en dos secciones no relacionadas:
- Síntesis de texto
- Reconocimiento de voz.
Tomo el primer punto, como el más fácil. Inmediatamente me encuentro con un código para principiantes, solo unas pocas líneas.
Síntesis de voz preestablecidausing System.Speech.Synthesis; public static void getSpeech(string text) { SpeechSynthesizer speaker = new SpeechSynthesizer(); speaker.SetOutputToDefaultAudioDevice(); string selectedVoice = Properties.Settings.Default.Voice; speaker.SelectVoice("Microsoft Irina Desktop"); speaker.Rate = 1; speaker.Volume = 100; speaker.Speak(text); speaker.Dispose(); }
Lo puse en la fuente, e imagino, ¡dice el auto! Estoy un poco abrumado de alegría. ¿Tan fácil?
Sigue siendo una tontería: adjuntar una voz masculina. Lamentablemente, una voz rusa está preinstalada en Windows: hembra: "Microsoft Irina Desktop". Y tengo un chico chatbot, no una chica, no planeo hacerle una operación para cambiar de sexo.
Google nuevamente, después de un tiempo, estoy convencido de que hay pocas voces masculinas rusas. Esto se refiere a votos gratuitos, porque los servicios pagos no son para mis romances financieros de canto. Pero hay, también hay voces masculinas libres, por ejemplo, la voz "Alexander" de la biblioteca doméstica RHVoice. Bueno, que sea Alexander.
Desafortunadamente, la instalación (para mí) es de alguna manera complicada. Pero hay asambleas ya hechas. Descargo uno de los ensamblajes, lo instalo, subo a la configuración de Windows (Reconocimiento de voz / Texto a voz) y, ¡he aquí! - Encuentro la voz de "Aleksandr" junto a "Microsoft Irina Desktop". Con la respiración contenida me lanzo ...
¡Todo funciona en Windows!
Reemplazaré Microsoft Irina Desktop con Aleksandr en la fuente y ... ¡Ya no funciona nada! Triste pero no mortal. Lo arreglaremos ahora mismo.
Estoy estudiando el proyecto RHVoice, en particular la descripción del archivo de configuración, experimentando de esta manera y eso ... El resultado es el mismo: en lugar de sonidos, Alexander hace un gruñido ininteligible o nada en absoluto, a pesar de que Microsoft Irina lee como un locutor en televisión.
Un par de días todavía espero algo y perder el tiempo, pero luego me doy por vencido. Sí, mis manos están torcidas. Bueno, no sé por qué Aleksandr se niega a hablar, no lo sé, y no encuentro una respuesta en los foros.
Bien, estoy estudiando otras voces libres, el beneficio no es más de una docena.
Entonces me doy cuenta de que si quiero que los usuarios de Vanya Razonable escuchen la misma voz que yo, entonces tendré que instalar un instalador de voz en el paquete. Esto está más allá de mi poder, y soy reacio a participar en él, por lo que el primer párrafo, "Síntesis de texto en voz", termina con una rendición vergonzosa.
Tomo una decisión en principio:
- ¡Vamos al infierno con un perro! Deje que los propios usuarios de chatbot instalen las voces que quieran y elijan de la lista. Adjuntar una lista de votos predefinidos es una tarea factible.
- Expreso Vanya Razonable en una voz femenina, porque Vanya es joven y su voz aún no se ha roto. "Y no es en absoluto porque me están saliendo las manos del culo", me convenzo con la psicoterapia.
Con un corazón puro, paso al punto 2: Reconocimiento de voz.
El segundo punto es decisivo. ¿Quién necesita un bot de chat que pueda reproducir sus propias frases en voz, pero no entiende la voz del interlocutor? En caso de fracaso, la empresa de doblaje se derrumba.
Googleó de nuevo, esta vez frenético, en el último aliento.
¿Qué se revela? La mayoría de las opciones son de pago: hay gratuitas, pero solo unas pocas para el idioma ruso.
Yandex SpeechKit aparece como el más simple en la red, pero lo guardaré para más adelante si las opciones más complejas no funcionan. Prefiero obtener reconocimiento fuera de línea.
Aquí hay una solución completamente gratuita de CMUSphinx. Estoy estudiando reseñas:
- en primer lugar, no hay exclamaciones escandalosas: hermanos, ¡todo funciona!
- En segundo lugar, la descripción de la instalación es completamente absurda para mí. ¡Parece que después de la instalación, la biblioteca también necesita capacitación!
Cayendo
Siguiente Microsoft Speech Platform, gratis.
Busco en Google y encuentro un
enlace con una descripción accesible más el código fuente del ejemplo. Descargar la fuente, compilar. Digo "Uno, dos", y el programa entrega el texto reconocido. Slave-o-otayet! ..
Un poco confuso es el hecho de que el texto no es reconocido por sí mismo, pero primero debe agregarse al diccionario. Pero no da miedo: en lugar de "uno, dos" adjuntaré un archivo voluminoso con ortografía.
Transfiero el código del código fuente del ejemplo a mis fuentes, trato de lograr el mismo efecto ... No se compila, se cae en la recuperación.
Luego leo los comentarios con el ojo izquierdo y encuentro que la solución es adecuada para reconocer comandos, pero no permite trabajar con texto continuo. Compruebo según el ejemplo original. Sí, "uno, dos" reconoce, y "uno, dos, tres" no lo es completamente: no escucha los tres. En los comentarios encuentro con mi ojo derecho algo como: "El texto continuo se reconoce por una tarifa", y la Plataforma de voz de Microsoft deja de existir para mí.
Escuché que Google proporciona su reconocedor gratis durante un año, debería comprobarlo.
Yo reviso. Ya no, por lo que puedo juzgar.

No excluyo que busqué en Google incorrectamente, pero no me culpes: comparto con mis principiantes la experiencia personal que he adquirido.
Voy a renunciar a Yandex. Aquí están las exclamaciones "¡Hermanos, todo funciona!" suficiente, y las personas privadas, previa solicitud individual, pueden obtener el servicio de forma gratuita, vi el anuncio con mis propios ojos. Puedo conectarme a SpeechKit por API, hay instrucciones disponibles.
Vengo a rendirme y ¿qué veo? La compañía acaba de presentar Yandex.Cloud, donde trasladó el servicio de tecnología de voz. No estoy orgulloso, me registraré en la nube: probablemente todo sea igual allí que antes ...
Y aquí me espera un terrible fastidio:
- En primer lugar, no puede escuchar sobre el uso gratuito del reconocedor. Es cierto que otorgan una subvención con la que puede pagar el servicio por un tiempo. Ok, sigo registrándome ...
- ¿Y qué es este negocio? Para trabajar con el servicio, me exigen que indique los detalles de una tarjeta bancaria. Extracto de una carta que se me envió como creador del perfil en la nube:

En algún lugar vi esto: en mi opinión, en Google. Por lo tanto, Yandex tomó un ejemplo de un amigo mayor.
Me sorprende la ausencia de mensajes indignados en Habré. Bueno, no solo requieren dinero para los servicios, ¡sino que piden la llave del apartamento donde está el dinero! De todos modos, me enfurece que durante algún tiempo el banco no pueda entregar mi propio dinero de acuerdo con la decisión del gerente del banco, y aquí el segundo tío requiere esencialmente el mismo derecho. Además, antes de aceptar cambiar a la versión paga. Todavía no he hecho ningún acuerdo con este tío, y ya me da las llaves del apartamento, por si acaso. ¡Ah, qué amable y prudente!
Sabes, tío Yandex, no tengo nada contra ti, y uso tus servicios con gusto, pero, lo siento, hasta que tenga la oportunidad de elegir, no recibirás la contraseña de mi tarjeta bancaria. Y especialmente para que pueda dibujar una tarjeta con dos rublos, no tengo tiempo, y no es rentable.
Aquí una nota llama la atención sobre la imperfección de las tecnologías de reconocimiento de voz. El punto es que por el momento no se ha hecho nada bueno en el campo del reconocimiento de voz, y no vale la pena usar sistemas de reconocimiento. Lo juro y me resigno a la idea de que en el futuro cercano Vanya el Inteligente no hablará.
El siguiente párrafo es el siguiente artículo sobre los servicios de reconocimiento de voz en línea. Los servicios en línea no son adecuados, por supuesto. Bueno, reconozco el sonido en winforms, pero no en el sitio ... Sin la menor esperanza, hago clic en el enlace y ...
Al día siguiente, el bot del chat gana voz.
Presentamos la varita mágica:
speechpad.ru . Te advierto que el servicio solo funciona en Chrome. Esto no me detiene: uso Chrome. Y tiene el motor de Google: aparentemente, algunas oportunidades desconocidas para mí para usar el servicio siguen siendo gratuitas.
Speechpad tiene una interfaz sencilla pero bastante funcional:

Conectar el reconocedor toma un tiempo mínimo.
Después de leer las instrucciones, lo primero que hago es integrar el servicio con el sistema operativo. Es cierto que la integración se paga, pero 100 rublos al mes, independientemente del volumen de reconocimiento, es otra cuestión. Estos no son aranceles draconianos para cada pieza reconocida. Además, se da un período de prueba de dos días para familiarización.
Me registro en el sitio, presiono el botón de encendido del período de prueba, en un minuto instalo un par de Pribluda especificado en las instrucciones, y todo funciona. Principio de acción: el texto reconocido se agrega en la ubicación del cursor. Realmente reconocido y realmente agregado. Se reconoce no sin errores, pero, desde mi punto de vista, es satisfactorio.
Después de un par de horas de prueba, llegué a la conclusión de que es más racional usar el portapapeles, y esta función es gratuita. Aquí, por supuesto, no para todos:
- Al integrarse con el sistema operativo, el cursor debe estar en un campo de chatbot específico. Durante las pruebas, me olvido varias veces y cambio del bot de chat a VS, como resultado de lo cual el texto reconocido se introduce en la fuente;
- al usar el portapapeles, está prohibido usar el portapapeles, de lo contrario, el texto copiado al portapapeles desde un programa de terceros aparecerá instantáneamente en el chatbot. Un par de veces también me encuentro con esto, pero pronto me acostumbro.
Al final me detengo en el portapapeles.
Todo, el problema está resuelto.
Más tiempo que conectar el reconocimiento desde el panel de voz, lleva reconocer las frases pronunciadas por el bot del chat. Sudo mucho hasta que me alcanza que es más fácil apagar el micrófono. Googlear el código de silencio del micrófono.
Código de encendido / apagado del micrófono using NAudio.CoreAudioApi;
* - los comentarios no son míos, sino copiados. No doy el enlace, ya que su propietario admite que él mismo tiene el código de Google en las entrañas de Internet de habla inglesa.
** - Hice cambios menores en el código. Antes de la frase del bot de chat, apago el micrófono, después de la frase que enciendo, como resultado, el servicio solo escucha mis frases, pero no escucha el bot de chat.
Aquí está el resultado final:
Para completar mis impresiones, estoy navegando en una docena de sitios con reconocimiento de voz. En principio, todos son iguales y la mayoría de los motores son de Google, pero no se encuentra la capacidad de recibir texto explícitamente en el portapapeles. A juzgar por los comentarios, en algunos lugares existe la posibilidad de expresar sitios, pero no profundizo en este tema. Como dicen, no buscan lo bueno de lo bueno.
Ahora otro problema: creo que sería bueno ajustar la animación que pronuncia el discurso pronunciado. Quiero algo más simple: una biblioteca para C # con una elección de caracteres. Pero me dijeron que no hay ninguno en .NET ...
En realidad, eso es todo. El joven tiene una voz femenina, pero en general, el modo de voz está funcionando.
Espero presentar pronto a Vanya la Razonable en una forma más presentable. En el pasado, se ha actualizado de manera significativa y más sabia: cambió de Access a PostgreSQL, los algoritmos mejoraron, fue posible conectar diccionarios, construir la base de datos inicial de respuestas típicas, en resumen, otra persona.