Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
SISTEMA SINTETIZADOR DE VOZ PARA PERSONAS CON
DISCAPACIDAD VOCAL Y LIMITACIÓN MOTRIZ
María Andrea Carrero Núñez
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
Facultad Tecnológica
Ingeniería en Control y Automatización
Bogotá D.C. Agosto, 2021
SISTEMA SINTETIZADOR DE VOZ PARA PERSONAS CON
DISCAPACIDAD VOCAL Y LIMITACIÓN MOTRIZ
María Andrea Carrero Núñez
Código: 20182383007
Monografía
Presentado para optar al título de: Ingeniera en Control y Automatización
Director
Miguel Ricardo Pérez Pereira
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
Facultad Tecnológica
Ingeniería en Control y Automatización
Bogotá D.C. Agosto, 2021
i
Dedicatoria
A mi familia, en especial a mi madre que me ha apoyado durante mi proceso de formación, de
manera incondicional.
ii
Índice
Índice .......................................................................................................................................... ii Índice de Tablas ......................................................................................................................... iv
Resumen ..................................................................................................................................... v 1. Introducción ........................................................................................................................ 1
2. Planteamiento del problema................................................................................................. 2 3. Justificación ........................................................................................................................ 3
4. Objetivos ............................................................................................................................. 4 4.1 Objetivo General ........................................................................................................... 4
4.2 Objetivos específicos .................................................................................................... 4 5. Antecedentes ....................................................................................................................... 5
6. Marco teórico .....................................................................................................................10 6.1 Síntesis de voz:.................................................................................................................10
6.2 Tipos de Sintetizador ........................................................................................................11 6.3 Python ..............................................................................................................................15
6.4 Microcontroladores ..........................................................................................................16 6.4.1 Microcontrolador PIC ................................................................................................16
6.4.2 Microcontrolador AVR ..............................................................................................16 6.4.3 Microcontrolador ARM .............................................................................................16
6.5 Herramientas de Software y Hardware..............................................................................17 6.5.1 Pyttsx3 ......................................................................................................................17
6.5.2 Tesseract y pytesseract...............................................................................................18 6.5.3 Onshape.....................................................................................................................18
6.5.4 Joystick .....................................................................................................................19 7. Metodología .......................................................................................................................21
7.1 Herramienta de sintetización ............................................................................................21 7.2 Desarrollo de algoritmo para aplicativo de sintetizador de texto a voz ..............................25
7.2.1 Desarrollo algoritmo sintetizador ...............................................................................26
7.2.2 Desarrollo algoritmo para prototipo ...........................................................................30 7.3 Desarrollo de prototipo para la manipulación del aplicativo sintetizador ...........................30
7.3.1 Método de microcontrolador como HID ....................................................................31 7.3.2 Método de Microcontrolador – Python .......................................................................34
7.3.3 Diseño de piezas para el prototipo..............................................................................35 7.4 Diseño de interfaz gráfica de usuario ................................................................................37
8. Resultados ..........................................................................................................................42 8.1 Diseño definitivo ..............................................................................................................42
8.2 Restricciones de la solución ..............................................................................................43 8.3 Validación del resultado ...................................................................................................43
8.3.1 Prueba de practicidad .................................................................................................43 8.3.2 Prueba de palabras por minuto ...................................................................................46
8.4 Evaluación del impacto de la solución ..............................................................................48 9. Conclusiones ......................................................................................................................49
10. Recomendaciones ............................................................................................................50 11. Referencias......................................................................................................................51
iii
Índice de Figuras
Figura 1 Código morse y de mouse [10] ...................................................................................... 8
Figura 2 Diagrama de un sintetizador de texto a voz [15] ...........................................................11 Figura 3 Diagrama básico de síntesis por formantes [16] ............................................................12
Figura 4 Maquina parlante [14] ..................................................................................................13 Figura 5 Entorno grafico Onshape [Autor] .................................................................................19
Figura 6 Modulo Sensor Joystick KY-023 [27] ..........................................................................20 Figura 7 Diagrama de modelo de producción de voz [28] ...........................................................22
Figura 8 Sintetizador por formantes en cascada o serie [29] .......................................................22 Figura 9 Sintetizador por formantes en paralelo [29] ..................................................................23 Figura 10 Sintetizador por formantes configuración combinada [29] ..........................................23
Figura 11Diagrama de flujo del funcionamiento del algoritmo [Autor] .......................................26 Figura 12 Extracción de caracteres de imagen [Autor] ................................................................28
Figura 13 Diagrama de bloques para desarrollo de prototipo [Autor] ..........................................31 Figura 14 Modulo Sensor Joystick KY-023 [27] ........................................................................31
Figura 15 Etapas del método HID ..............................................................................................32 Figura 16 Diagrama de flujo algoritmo modulo sensor ...............................................................33
Figura 17 Secciones de método Microcontrolador y Python .......................................................34 Figura 18 Diagrama de flujo programa Python ...........................................................................35
Figura 19 Soporte para mandíbula [Autor] .................................................................................36 Figura 20 Cilindro de acople [Autor] ..........................................................................................36
Figura 21 Caja y tapa para compactar el prototipo [Autor] .........................................................37 Figura 22 Interfaz de usuario [Autor] .........................................................................................37
Figura 23 Lista de frases de saludos [Autor] ...............................................................................38 Figura 24 Lista de frases de respuesta [Autor] ............................................................................38
Figura 25 Lista de frases de preguntas [Autor] ...........................................................................38 Figura 26 Lista de frases de despedidas [Autor] .........................................................................39
Figura 27 Panel de texto y teclado de interfaz [Autor] ................................................................39 Figura 28 Botón para buscar imagen y botón de reproducir el texto [Autor] ...............................40
Figura 29 Texto extraído de imagen e imagen original [Autor] ...................................................40 Figura 30 Sección frases definidas por usuario [Autor] ..............................................................41
Figura 31 Prototipo obtenido junto con el aplicativo sintetizador [Autor] ...................................42 Figura 32 Mouse acondicionado [Autor] ....................................................................................43
Figura 33 Grafica de tiempos de acuerdo al número de pruebas con prototipo ............................44 Figura 34 Usuario validando el sistema ......................................................................................44
Figura 35 Manipulación de mouse acondicionado ......................................................................45 Figura 36 Grafica de tiempos de acuerdo al número de pruebas con mouse acondicionado .........45
Figura 37 Usuario con discapacidad validando el sistema sintetizador y el prototipo [Autor]......46 Figura 38 Usuario simulando condiciones de discapacidad para la validación del sistema [Autor]
..................................................................................................................................................47
iv
Índice de Tablas
Tabla 1 Unidades de concatenación ............................................................................................15
Tabla 2 Comparación de librerías ...............................................................................................25 Tabla 3 Tiempos obtenidos de prueba con prototipo ...................................................................44
Tabla 4 Tiempos obtenidos de prueba con mouse acondicionado ...............................................45 Tabla 5 Tiempos obtenidos en prueba para persona discapacitada usando el prototipo................46
Tabla 6 Palabras por minuto implementando el prototipo ...........................................................47 Tabla 7 Palabras por minuto implementando el mouse acondicionado ........................................47
v
Resumen
Debido a la dificultad de comunicación que presenta una persona con limitación vocal y de
movilidad en sus miembros superiores, se buscó el desarrollo de un sistema sintetizador que les
permita tener una mejor comunicación con las demás personas de su entorno, es por esto, que en
el presente documento se explicará el desarrollo e implementación de un sintetizador de texto a
voz para personas con discapacidad vocal y limitación en el movimiento de las extremidades
superiores (manos, brazos).
En el desarrollo del sistema sintetizador, se elaboró una aplicación la cual se visualiza como una
interfaz de usuario, ésta consta principalmente de un teclado y un panel de texto donde el usuario
puede ver lo que él mismo está conformando o escribiendo mediante el uso del teclado, el desarrollo
de esta aplicación fue realizado mediante la implementación de Python, ya que es un software libre
y cuenta con diversas herramientas para el desarrollo de la aplicación, luego, se implementó un
sensor que permitiera de manera practica el manejo de la aplicación, para este caso se realizaron
dos adaptaciones de mouse, una de ellas consistió en la implementación de un módulo sensor
joystick con un microcontrolador, la segunda consistió en el aprovechamiento del sensor óptico de
un mouse, al cual se le realizaron unos ajustes para adaptarlo a la situación que se presentaba; A
las dos adaptaciones de mouse realizadas, se les acondiciona una estructura para que el usuario
pueda manipular el mouse para el uso de la aplicación.
Finalmente, se obtuvo el sintetizador de texto a voz manipulado por medio de un sensor mecánico
y uno óptico, de lo cual se pudo obtener una comparación de cuál de los dos mecanismos era más
práctico y de mejor funcionamiento para el uso de la aplicación del sintetizador.
Palabras claves: Síntesis de voz, Procesamiento de texto, Sensor, Voz
1
1. Introducción
La comunicación es un aspecto esencial que compete a todas las personas para expresarse de
manera directa sobre algo, sin embargo hay quienes presentan una discapacidad para comunicarse
verbalmente, conocida como mutismo o afonía, la cual algunas veces está acompañada de sordera,
de acuerdo a la OMS (Organización Mundial de la Salud), existen alrededor de 1500 millones de
personas que presentan problemas de audición o sordera, lo que conlleva como consecuencia
dificultad en la comunicación y el habla, también se tiene que una persona puede contar con más
de una discapacidad, entre estas se encuentra también la limitación de movimiento [1], como lo fue
el caso del físico Stephen Hawking. En vista de las dificultades que presenta este tipo de población,
se comenzó a hacer uso de la tecnología para poder dar una solución a estas brechas, en algunos
casos se han realizado guantes traductores de señas a voz, pero, de acuerdo a las condiciones de
discapacidad que trata este proyecto, este tipo de solución no aplicaría. Por otro lado, se han
desarrollado aplicaciones que permiten la realización de síntesis de texto a voz para que la persona
o usuario pueda comunicarse de una manera más sencilla, estas aplicaciones se acondicionan a
sensores u otros dispositivos, para que el usuario pueda hacer uso de ella, un ejemplo claro de este
tipo de tecnología, es ACAT1.
Se estima que en Colombia el 2,3% de la población tiene alguna discapacidad, un 5,3% corresponde
a discapacidad auditiva y el 5,18% a discapacidad de voz y habla, y un 34,05% corresponde a
discapacidades del movimiento del cuerpo [2], adicional a esto, existe la posibilidad de que una
persona cuente con limitación de movimiento y a su vez mutismo, impidiendo así, la manera de
comunicarse con la sociedad.
De acuerdo a lo anterior, con el propósito de facilitarle a las personas con discapacidad motora y
vocal, comunicarse con los demás, en este trabajo se presenta el desarrollo de un sistema prototipo
de sintetizador de voz, que le permita al usuario hacer uso de él de una manera sencilla y así mismo
poder comunicarse con las demás personas, para ello se realizó una investigación y
acondicionamiento de herramientas que permitieran el desarrollo del prototipo, haciéndolo de bajo
costo y fácil acceso.
1 El kit de herramientas de asistencia al contexto (ACAT) permite a los usuarios comunicarse fácilmente con otros a
través de la simulación de teclado, la predicción de palabras y la síntesis de voz.
2
2. Planteamiento del problema.
Debido a la discapacidad de mutismo o afonía que se presenta en la población, se han presentado
varias estrategias para permitirles a estas personas comunicarse con los demás, entre estas
estrategias se encuentra el lenguaje de señas, lo cual implica el uso de las manos y expresiones
faciales, que permite expresar lo que se desea transmitir, por otro lado, están las estrategias
tecnológicas, entre ellas se encuentran los sintetizadores de voz, los cuales con sistemas o
dispositivos encargados de convertir señales a habla, estos sintetizadores se pueden encontrar en
dispositivos móviles mediante las apps como lo es el traductor, en el cual se logra evidenciar la
versatilidad que poseen los sintetizadores de voz para emitir las oraciones o frases que se le
ingresan por medio de texto, sin embargo en algunos casos pueda que las personas presenten alguna
otra limitación aparte de la vocal, como lo puede ser la limitación motriz en sus miembros
superiores o la falta de ellos, lo cual le impide hacer uso de las aplicaciones móviles.
Colombia no cuenta con una cifra totalmente confirmada de la población que tiene alguna
discapacidad, pero de acuerdo al RLCPD (Registro de Localización y Caracterización de Personas
con Discapacidad), se tiene que el 2,3% de la población colombiana presenta alguna discapacidad
[3]. De este porcentaje se estima que un 5,3% corresponde a discapacidad auditiva y el 5,18% a
discapacidad de voz y habla, y un 34,05% corresponde a discapacidades del movimiento del
cuerpo, manos, brazos, piernas, de igual manera se especifica que de acuerdo a censos realizados,
se tiene que una persona puede contar con más de una discapacidad [2], por lo que existe la
posibilidad de que una persona cuente con limitación de movimiento y a su vez mutismo.
De acuerdo a estas necesidades que se presentan, se han desarrollado diversas soluciones para la
inclusión en la comunicación, como lo es el lenguaje de señas o el Centro de Relevo proporcionado
por el Ministerio de las Tic’s (MinTic), sin embargo, estas herramientas no pueden ser usadas por
la población con discapacidad motriz y vocal, ya que para su uso requieren de la implementación
de sus miembros superiores , por ello se podría cuestionar si ¿es posible desarrollar un sistema
sintetizador acondicionado a este tipo de población, que sea de fácil manipulación y de bajo costo?
3
3. Justificación
Aunque la comunicación sea un aspecto esencial que requieren todas las personas para expresarse
de manera directa sobre algo, hay personas que presentan una discapacidad para comunicarse
verbalmente, conocida como mutismo o afonía, es por esto que se han presentado varias estrategias
para permitirles a estas personas comunicarse con los demás, entre estas estrategias se encuentra el
lenguaje de señas, lo cual implica el uso de las manos y expresiones faciales, que permite expresar
lo que se desea transmitir, sin embargo, el lenguaje de señas a pesar de que se usa en todo el mundo,
presenta algunas variaciones en algunas regiones; por otro lado, están las estrategias tecnológicas,
entre ellas se encuentran los sintetizadores de voz, los cuales con sistemas o dispositivos
encargados de convertir señales a habla, estos sintetizadores se pueden encontrar en dispositivos
móviles mediante las apps como lo es el traductor, en el cual se logra evidenciar la versatilidad que
poseen los sintetizadores de voz para emitir las oraciones o frases que se le ingresan por medio de
texto; entre las estrategias tecnológicas, también se pueden encontrar guantes o mecanismos que
permiten la traducción de las señas a textos o audios lo cual facilita la comunicación para las
personas con limitación vocal, sin embargo, estas soluciones tecnológicas en algunos casos no son
del todo útiles, debido a que algunas personas que presentan problemas de comunicación, también
presentan complicaciones o discapacidades que les impide realizar movimientos con sus manos o
brazos, lo cual complicaría la manipulación de dispositivos móviles, uso de guantes traductores de
señas o la implementación del lenguaje de señas.
Debido a lo anterior mencionado, se requiere la realización de un prototipo de sintetizador de voz
que sea manejado a través de un sensor fácilmente manipulable por personas sin extremidades
superiores, para que de eso modo su comunicación con los demás no sea limitada por sus
condiciones físicas.
4
4. Objetivos
4.1 Objetivo General
Desarrollar un sistema prototipo de sintetizador de voz manipulado por medio de un sensor,
para personas con movilidad reducida de extremidades superiores y limitación vocal.
4.2 Objetivos específicos
• Diseñar un prototipo de sintetizador de voz que permita a la población con limitación motriz
y vocal comunicarse con las personas oyentes.
• Diseñar la interfaz gráfica del sistema.
• Validar el funcionamiento del prototipo a través de una persona con condiciones normales,
simulando las limitaciones de la población a la que se dirige el proyecto.
5
5. Antecedentes
En esta sección se expondrán algunos proyectos de sintetizadores de texto a voz que han sido
implementados para facilitar la comunicación de las personas que presentan discapacidad vocal o
algunas complicaciones con el habla, estos sintetizadores en ciertos casos van de la mano con otro
dispositivo, el cual le proporciona al sintetizador las señales para su funcionamiento, algunos
dispositivos suelen ser sensores neuronales, guantes, cámaras, entre otros.
De [4] los autores, implementando Machine Learning, buscaban el desarrollo de un dispositivo que
pudiera beneficiar a la población con limitaciones de voz y movimiento, haciendo uso de las
reproducciones de gestos, las cuales juegan un papel esencial para convertir los datos del sensor en
salida de voz o para operar un robot de selección y colocación para el movimiento restringido. El
dispositivo está diseñado para ser un dispositivo portátil como un guante que se lleva en la mano
de la persona. La unidad de sensores se coloca en nodos específicos del guante para registrar la
posición del gesto. Los sensores de acelerómetro o giroscopio se pueden implementar fácilmente.
Los datos de detección son recopilados por el microcontrolador que los transmite a un nuevo
microcontrolador a través del transceptor RF / Bluetooth conectado al sistema. con los gestos o
datos recibidos, se tiene como resultado un conjunto de caracteres o una cadena, seguido de esto
se utiliza un algoritmo de revisión ortográfica para mejorar la cadena con el propósito de formar
una palabra coherente con lo que la persona expresó mediante los gestos. Las palabras se introducen
en una unidad de conversión de texto a voz donde se utiliza una voz generada por computadora
para generar las palabras. Finalmente se logró un producto que permite la comunicación de las
personas sordomudas con personas que no comprenden las señas, mediante la salida de voz que se
obtuvo, adicional a esto se menciona que pude usarse en otras aplicaciones como controlar un robot
para recoger y colocar objetos para personas en silla de ruedas, personas con impedimentos de
movimiento y ancianos.
En [5] los autores plantean un sistema que consta principalmente de dos módulos, el primer módulo
consiste en extraer los gestos del lenguaje de señas indio (ISL) a partir de un video en tiempo real
y mapearlo con un habla comprensible para los humanos. En consecuencia, el segundo módulo
tomará el lenguaje natural como entrada y lo mapeará con gestos animados de lenguaje de señas
indio equivalentes. El procesamiento de video a voz incluirá la formación de cuadros a partir de
videos, la búsqueda de la región de interés (ROI) y el mapeo de imágenes con una base de
conocimiento del idioma utilizando un enfoque basado en correlación y luego la generación de
audio relevante utilizando la API de Google Text-to-Speech (TTS). A la inversa, el lenguaje natural
se asigna con gestos equivalentes del lenguaje de señas indio mediante la conversión de voz a texto
mediante la API de Google Speech-to-Text (STT), lo que permite asignar aún más el texto a gestos
animados relevantes de la base de datos. Para el desarrollo del proyecto, realizaron capturas de
imágenes o fotogramas de las señas que hace la persona, luego de tener las capturas, se realizó un
mapeo del cual se pudo llevar las señas a formato de texto, permitiendo de esta manera realizar una
conversión del lenguaje de señas exitosa, pero para una mejor interacción humano-computadora,
se debe procesar aún más el texto obtenido anteriormente, de esta manera se convierte mediante
Google TTS (Text to Speech), lo cual da todas las disposiciones para la conversión de texto a audio,
6
por otra parte se hace uso de Google SST (Speech to Text) para procesar el lenguaje natural de una
persona hablante, el primer paso es generar datos de texto a partir de datos de voz de audio.
De [6], se tiene un planteamiento para la elaboración de un dispositivo que permita comunicarse a
las personas mudas con personas que puedan hablar, mediante sensores neuronales. Este
dispositivo utiliza sensores neuronales que se fijan sobre la cabeza y detrás del lóbulo de la oreja
del usuario. Los usuarios pueden realizar las señas que se implementan normalmente para
transmitir sus ideas. Los sensores detectan los impulsos cerebrales ya que cada movimiento de la
mano tiene un conjunto específico de impulsos cerebrales y luego se realizan algunos cálculos
específicos utilizando la Transformada Discreta de Fourier. La lógica difusa en la inteligencia
artificial se utiliza para hacer coincidir las soluciones
obtenidas de las señales convertidas con las soluciones almacenadas para que convierta los
impulsos en voz y de esa voz (la voz traducida y sintetizada artificialmente de los tontos) como
salida que hace a otros. para entender sus comentarios fácilmente. De esta manera, el sintetizador
de voz artificial reconforta a la persona muda a superar su discapacidad comunicándose como una
persona normal. Por otra parte, de [7] se tiene que mediante el uso de LabVIEW se desarrolló una
aplicación capaz de ayudar a las personas que cuentan con algunas discapacidades, en específico
discapacidades visuales y/o vocales, aunque cabe aclarar que también es útil al resto de la
población. Esta aplicación es una herramienta que consta de un convertidor de Texto a Voz (TTS)
con la capacidad de leer archivos de texto en código ASCII (.txt), imágenes con extensión .jpg y
texto introducido directamente desde la misma interfaz gráfica de la aplicación. Además, es capaz
de convertir el texto interpretado en documentos codificados en Braille y desplegarlos en un
archivo del procesador de texto más común que es Microsoft Word. Como punto final, la aplicación
es capaz de guardar la lectura computarizada en archivos de audio tipo WAV (WAVE form audio
file format) y así crear audiolibros de las fuentes de texto ya descritas.
En [8] se observó que tuvieron como referencia ACAT, el programa mediante el cual Stephen
Hawking se comunicaba con la sociedad, de allí nace la idea de la siguiente aplicación, la cual
permite tener una comunicación un poco más directa entre las personas que presentan
discapacidades que les impide hablar, y las personas que están a su disposición o compañía. El
software desarrollado, es una aplicación con entorno gráfico, el cual cuenta de dos o tres usuarios
que la usan, es decir se pueden registrar dos o tres personas en la aplicación, una de ellas es el
paciente o la persona que presenta la discapacidad que le impide comunicarse correctamente, otro
de los usuarios es la persona es quien se encuentra la mayoría del tiempo con el paciente, y un
tercer usuario puede ser el médico tratante o el terapeuta, ya que la aplicación va enfocada a la
población que por alguna alteración en su desarrollo no pueden moverse correctamente ni tampoco
hablar, pero son conscientes de lo que sucede en su entorno. La aplicación puede manejarse con un
mouse o un joystick, ya que lo que se requiere para su funcionamiento es un clic, de esta manera
se selecciona las letras para formar las frases que se quieren transmitir, o se puede también hacer
selección de alguna película para el entretenimiento del usuario.
De [9] los autores ejecutaron la elaboración de un guante inteligente para personas con problemas
de audición e incapacidad para hablar. El guante consta de cinco sensores flexibles que permiten
reconocer la torsión de cada dedo, el controlador utilizado como parte del lado del transmisor fue
un Arduino NANO interconectado con el transmisor de RF, el cual permite enviar las señales de
7
los sensores. Los sensores flexibles y el transmisor de RF están interconectados con el
microcontrolador. En el lado del colector, hay un módulo de RF para obtener las señales. El
microcontrolador utilizado como parte del lado beneficiario fue el Arduino Mega2560, se empleó
también el módulo Emic-2, mediante el cual se intenta transmitir el sonido a través de un altavoz
de 8 ohmios. El módulo de texto a voz de EMIC 2 se utiliza para crear el sonido árabe donde en
EMIC 2 se caracteriza por los sonidos de letras en inglés y español según las hojas técnicas. El
guante habla de las letras de comunicación basadas en gestos, ya que produce un sonido a través
del parlante, lo que ayuda a restringir el límite de correspondencia entre los individuos que no
cuentan con la voz y los oyentes. Con este proyecto se buscó ayudar a esta clase de individuos que
no hablan, a hablar con otros y mejorar sus compromisos con el desarrollo de su entorno.
En [10] se tiene que, de acuerdo a que las personas con discapacidades graves tienen diferentes
estados y cursos de su enfermedad, los dispositivos de entrada que se usan para el sistema de
asistencia no son los mismos, es por eso que, de acuerdo con las necesidades de las personas con
discapacidades graves, se diseñó un dispositivo de entrada de asistencia (AID) el cual se integró
con el sistema Intel Assistive Context-Aware Toolkit (ACAT) para personas con discapacidades
graves. Cabe mencionar que ACAT era la plataforma mediante la cual Stephen Hawking se
comunicaba. El ACAT AID es un dispositivo de entrada de asistencia diseñado para el sistema
Intel ACAT, de acuerdo con las necesidades de los discapacitados graves, se diseñaron e integraron
varios tipos de entrada de asistencia (como el tipo inductivo y el tipo de contacto) con el sistema
Intel ACAT para que los discapacitados graves seleccionaran más opciones. Hay cinco tipos de
interruptores para la entrada de ACAT AID, que son tipo de interruptor, tipo de sensor, tipo de
imagen, tipo de bioseñal y tipo de voz, etc. El tipo de interruptor (interruptor de tipo mecánico)
pertenece al tipo de entrada de contacto, como los interruptores de botón y el interruptor controlado
por la boca. Debido a que el interruptor de tipo inductivo necesita energía para actuar, se le llamó
nuevamente interruptor de tipo activo. De lo contrario, el interruptor de tipo de contacto se
denominó interruptor de tipo pasivo. El mismo tipo de señal de entrada se generará para el ACAT
AID mediante el procesamiento de señales. El usuario puede operar la función de computadora /
tableta con solo una tecla, y comunicarse con otros, controlar los electrodomésticos, jugar, estudiar
y trabajar. En este estudio, se utilizó un concepto de diseño modular para ampliar los tipos de
entrada, de esta manera se pueden integrar varios tipos de interruptores de entrada y mejorar la
entrada hacia una mayor eficiencia, el sistema puede conectar interruptores activos y pasivos, y
usar codificación de código Morse para crear instrucciones simples para la entrada. Hay dos modos
de funcionamiento en ACAT AID. Uno es el modo de entrada ACAT, que incluye cuatro
instrucciones para mejorar el efecto de entrada de ACAT, el elemento corto del código Morse. El
otro es el modo de mouse, mediante la figura que se presenta a continuación se puede observar los
códigos empleados y el movimiento del mouse para el funcionamiento de ACAT AID.
8
Figura 1 Código morse y de mouse [10].
De [11] los autores diseñaron un software llamado TTS Gramaty, una aplicación sencilla, con la
funcionalidad de convertir de texto a voz. El sistema fue desarrollado usando lenguaje C # sobre
.Net Framework 3.5. La aplicación se divide en dos módulos principales: el módulo de la aplicación
principal que incluye los componentes básicos de la GUI que maneja las operaciones básicas de la
aplicación, como la entrada de parámetros para la conversión, ya sea a través de un archivo o
entrada directa del teclado.
El segundo módulo, el motor de conversión principal que se integró en el módulo principal, es para
la aceptación de datos y, por lo tanto, la conversión. TTS Gramaty (TTSG) convierte texto en voz
escribiendo el texto en el campo de texto proporcionado o copiando un documento externo en el
computador y luego pegándolo en el campo de texto proporcionado en la aplicación. También
proporciona una funcionalidad que permite al usuario navegar y abrir un documento de texto en la
máquina. Luego, TTSG carga el texto del documento en el área de texto de la aplicación y el
procedimiento de lectura se inicia automáticamente. TTSR contiene una función excepcional que
le da al usuario la opción de guardar su texto ya convertido en cualquier parte de la máquina local
en un formato de audio; esto permite al usuario copiar el formato de audio a cualquiera de sus
dispositivos de audio, de modo que en adelante pueda tratarlo como un libro de audio.
En [12] los autores proponen la primera aplicación TTS árabe que proporciona un sistema
inteligente de predicción de texto con características de alta usabilidad, con un gran corpus global
y también un corpus local. La predicción de palabras utiliza modelos de lenguaje estadístico en un
gran corpus árabe que se recopilan de las conversaciones diarias. La aplicación TTS árabe
inteligente funciona en teléfonos inteligentes o tabletas para el uso diario. La página de inicio tiene
las funciones principales: convertir texto a voz después de escribir una palabra / una oración usando
predicciones de palabras mientras el usuario está escribiendo. El sistema de predicción de palabras
utiliza corpus globales y locales para predecir nueve palabras potenciales. Las nuevas palabras se
incluyen inmediatamente en el corpus local para ser utilizadas en el modelado del lenguaje para el
próximo uso. Para mayor facilidad de uso, el sistema utiliza características como: Completar
palabras automáticamente usando nuestro corpus global como léxico, guardar frases favoritas con
su discurso para un fácil acceso, diferentes configuraciones de voz como género y edad, fácil acceso
9
a frases predefinidas de uso frecuente en diferentes lugares y dominios como viajes, restaurantes,
compras, hospitales, escuelas y mezquitas. El usuario o el cuidador también pueden crear categorías
especiales y agregar fotos con el texto y el habla deseados que podrían ser usando un sintetizador
TTS o una grabación de voz natural.
10
6. Marco teórico
6.1 Síntesis de voz:
La síntesis de voz es el proceso de transformar el texto a sonido, lo cual sirve para la creación de
voz artificial. Su funcionamiento se da una vez se entregan las palabras en formato de texto,
enseguida el sintetizador se encarga de pronunciarlas, puede ser implementado en productos
software o hardware.
El habla sintetizada se puede crear mediante la concatenación de fragmentos de habla grabados que
son almacenados en una base de datos. Los sistemas difieren en el tamaño de las unidades de habla
almacenadas; un sistema que almacena fonos y difonos permite un mayor rango de sonidos, pero
carece de claridad. Para usos específicos, el tamaño del almacenamiento de palabras completas u
oraciones permite una mayor calidad de audio. De manera alternativa, un sintetizador puede
incorporar un modelo de tracto vocal u otras características de la voz humana para recrear
completamente una voz sintética [13] [14].
En un conversor texto a voz (TTS: Text-to-Speech) intervienen varios módulos que realizan
transformaciones del texto de entrada y le incorporan una cantidad de información adicional para
generar el sonido sintetizado, tales como el procesamiento del texto o procesamiento de lenguaje
natural, la generación de la prosodia y el bloque de la síntesis de la voz, a continuación, se explicará
cada uno de estos módulos:
Procesamiento del texto: Uno de los primeros pasos es la normalización del texto para expandir
abreviaciones, convertir números y fechas en texto, etc. Esta es una tarea importante ya que es
necesario para el correcto funcionamiento de los siguientes módulos que el texto este constituido
solamente por grafemas, es decir unidades mínimas de escritura. En ocasiones se realiza también
un etiquetado morfosintáctico, que resulta necesario para tareas como la conversión de grafemas a
fonemas y la generación de junturas terminales en la prosodia, se realiza la conversión de grafemas
a fonemas y la silabificación para obtener la secuencia de fonemas necesaria para reproducir el
texto, incluyendo la información sobre sílabas que también es importante para los siguientes
módulos [15].
Prosodia: En este componente se genera la información prosódica para poder producir la voz. Para
ello se predicen las frases entonativas y la entonación de la oración, y también la duración y la
energía de los fonemas. La correcta generación de esta información repercutirá directamente en la
naturalidad y expresividad del sistema [15].
Generación de la voz: En este último componente es donde se genera la voz considerando la
información proporcionada por los módulos de Procesamiento del texto y Prosodia, la cual está
constituida por la secuencia de fonemas con la información relativa a su duración, energía,
frecuencia fundamental y posición dentro de la frase entonativa, la oración y el discurso.
11
A continuación, se observa el diagrama de un sintetizador de texto a voz típico, allí se puede ver
los tres bloques mencionados anteriormente, el analizador de texto o procesamiento de texto, el
analizador lingüístico o prosodia, y finalmente el generador de sonido o voz [15].
Figura 2 Diagrama de un sintetizador de texto a voz [15].
6.2 Tipos de Sintetizador
Síntesis por formantes
La síntesis por formantes fue la primera técnica de síntesis en ser desarrollada y fue la dominante
hasta los primeros años de la década de los 80. La síntesis por formantes adopta el siguiente enfoque
al problema de la síntesis modular, basado en modelo y acústico-fonético. Se hace uso de un
modelo acústico de tubo de un modo particular, ya que los elementos de control del tubo se pueden
relacionar fácilmente con propiedades acústico-fonéticas. En la figura 3 se muestra un esquema
básico de la síntesis por formantes, donde se observa como el sonido se genera en la fuente
periódica para sonidos sonoros, y ruido blanco para sonidos obstruyentes. Esta señal base se
introduce en el modelo de tracto vocal, haciendo diferencia en el modelado de las cavidades oral y
nasal, de modo que la señal pueda pasar por esta última únicamente en el caso que el sonido
requiriera de ser nasalizado. Por último, la salida de estas componentes se combina y se pasa a
través de una componente de radiación que simula las características de radiación de los labios y
de la nariz [16].
12
Figura 3 Diagrama básico de síntesis por formantes [16].
La valoración o evaluación de la síntesis por formantes tiene un resultado claro ya que suena casi
natural, por eso también es llamado “sonar limpiamente”, aunque está lejos de ser natural. Esto se
debe principalmente a que tanto el modelo de fuente como el de destino y el de transición son
demasiado simplistas, dejando de lado muchas de las sutilezas que realmente están implicadas en
la dinámica del habla. De acuerdo a la manipulación de los valores requeridos para al síntesis por
formantes, existe un conflicto entre tener un modelo fácilmente controlable y otro que produce un
habla sintética de alta calidad. La mayor crítica hacia la síntesis por formantes es que esta no suena
natural. Aun así, por producir habla inteligible la hace aún hoy competitiva según sea la aplicación
en la que vaya a ser utilizada [16].
Síntesis articulatoria
Este tipo de sintetizadores son modelos físicos basados en las descripciones detalladas de
mecanismos fisiológicos de producción de voz y generación de sonidos en el aparato vocal,
posiblemente es la forma más obvia de sintetizar habla, ya que se intenta simular de manera directa
la producción del habla humana, este enfoque es el más antiguo de los planteamientos en síntesis,
ya que la conocida “máquina parlante” de von Kempelen puede ser vista como un sintetizador
articulatorio [14][16].
13
Figura 4 Maquina parlante [14].
Esta máquina era un dispositivo mecánico con tubos, fuelles y conductos, los cuales con un
pequeño entrenamiento podrían ser utilizados para producir habla reconocible. Este dispositivo
solamente imita el tracto vocal usando fuentes y filtros, con la ventaja de que, al ser controlado por
un ser humano en tiempo real, los ajustes llevados a cabo se aprovechan de los mecanismos usados
por él para el control de la producción de la voz. Muchos sintetizadores modernos son extensiones
de los modelos acústicos de tubos, pudiéndose construir modelos generales complejos a partir del
conocimiento de las propiedades de propagación del sonido [16].
Síntesis derivada de las técnicas de predicción lineal
Este tipo de síntesis son de análisis-síntesis que trabajan con parámetros Lineal Predictive Coding
(LPC) para controlar la función de transferencia del filtro que simula el tracto vocal, LPC es una
de las técnicas de mayor alcance de análisis del habla y uno de los métodos más útiles para codificar
el hablan con calidad en un índice binario. Proporciona estimaciones extremadamente exactas de
los parámetros del habla, el cual es relativamente eficiente. El LPC comienza asumiendo que la
señal del habla es producida por un zumbador en el extremo de un tubo. El espacio entre las cuerdas
vocales produce el zumbido, que es caracterizado por su intensidad y la frecuencia. La zona vocal
forma el tubo, que es caracterizado por sus resonancias, que se llaman formantes.
El LPC analiza la señal del habla estimando los formantes, quitando sus efectos de la señal del
habla, y estimando la intensidad y frecuencia del zumbido restante, al proceso de quitar los
formantes se le llama filtración inversa, la señal restante se conoce como residuo, de esta manera
el LPC sintetiza la señal de habla invirtiendo el proceso, es decir utiliza el residuo para crear la
señal fuente, utiliza los formantes para crear un filtro y funcione la fuente a través de él para
finalmente tener como resultado el habla [17].
Síntesis concatenativa
La síntesis concatenativa es la opción que ha tenido más seguidores dentro de la comunidad
científica, parte de unidades de voz pregrabadas que debe de unir entre sí para generar el mensaje
oral. Estos sintetizadores intentan reducir al máximo el ruido de la codificación, y se realiza por
medio de una concatenación de unidades digitalizadas que son grabadas previamente y es ajustada
a la nueva producción de frase por medio de la prosodia original [16][17].
14
La técnica de concatenación de unidades, utiliza unidades pregrabadas del lenguaje que se
concatenan en base a los algoritmos computacionales de la selección para formar nuevas palabras
y oraciones, las unidades de voz digitalizadas, que son escogidas por el sintetizador, en base a la
transcripción fonética del texto que quiere convertirse en habla, actualmente la mayoría de los
conversores utilizan síntesis por concatenación de unidades, ya que con menos esfuerzo se obtienen
mejores resultados. Las unidades que participan en la concatenación, pueden ser de diferente
tamaño en un mismo sistema, las unidades que más frecuentemente se han utilizado en diferentes
proyectos son cinco, fonema, difonema, trifonema, silabas y semisilabas, y por último palabras, en
la tabla 1 se puede apreciar una descripción de cada unidad. En cuanto a la calidad de voz sintética,
con el método de concatenación se consiguen mejores resultados, ya que la síntesis por
concatenación permite alcanzar un alto grado de naturalidad [18][19].
UNIDAD DESCRIPCIÓN
Fonema
Es la unidad mínima capaz de diferenciar significados en las palabras, los fonemas agregan mucha flexibilidad a los sintetizadores que los utilizan. Una limitante del uso de los fonemas para la sintetización es su propiedad abstracta que engloba variaciones fonéticas contextuales (alófonos) lo que desemboca en una mala calidad de la voz sintética.
Difonema
Los efectos coarticulatorios tienden a minimizarse en el centro acústico de un fonema, lo cual derivó la propuesta del difonema, el trozo de voz que va desde la mitad de un fonema a la mitad del siguiente, como la unidad más satisfactoria para la concatenación.
Trifonema
Un trifonema es aquella unidad constituida por un fonema más de la mitad del segmento precedente y la mitad del siguiente segmento, con objetivo de evitar la concatenación por el segmento que ocupa el centro del trifonema. Su uso dota de más naturalidad al sintetizador de voz, aunque no se usa esta metodología en todas las ocasiones.
Silabas y semisilabas
La semisilaba es aquella unidad formada por la mitad de la silaba estableciendo el límite en el centro del núcleo silábico (una vocal). La concatenación a nivel de silabas, implícitamente incluye los
15
conceptos de unidades fonéticas: fonemas, difonemas y trifonemas, es por eso que muchas veces se escoge esta unidad como base de los sistemas.
Palabras
La palabra es la unidad que más proporciona calidad a la síntesis, pero sería necesario disponer de una base de datos con todas las palabras, donde cada palabra haya sido grabada en diferentes contextos para solucionar problemas de coarticulación. Por este motivo esta unidad se usa de manera restringida donde los vocabularios suelen ser limitados.
Tabla 1 Unidades de concatenación
6.3 Python
Python es un lenguaje de programación que puede ser clasificado como un lenguaje de alto nivel,
multiplataforma, de tipado dinámico y multiparadigma. Es administrado por la Python Software
Foundation. Posee una licencia de código abierto, denominada Python Software Foundation
License. De igual forma Python es un lenguaje que puede ser implementado en cualquier sistema
operativo, en la página oficial de Python se encuentran los instaladores en las versiones que se
requieran para el sistema que se requiera [20].
La biblioteca estándar de Python es muy extensa y ofrece una amplia variedad de funciones,
contiene módulos incorporados (escritos en C) que brindan acceso a la funcionalidad del sistema,
como E / S de archivos que de otra manera serían inaccesibles para los programadores de Python,
así como módulos escritos en Python que brindan soluciones generalizadas para muchos problemas
que ocurren en programación diaria. Algunos de estos módulos están diseñados explícitamente
para fomentar y mejorar la portabilidad de los programas de Python al abstraer los aspectos
específicos de la plataforma en API independientes de la plataforma. Los instaladores de Python
para la plataforma Windows generalmente incluyen la biblioteca estándar completa y, a menudo,
también incluyen muchos componentes adicionales. Para los sistemas operativos similares a Unix,
Python normalmente se proporciona como una colección de paquetes, por lo que puede ser
necesario utilizar las herramientas de empaquetado proporcionadas con el sistema operativo para
obtener algunos o todos los componentes opcionales.
Además de la biblioteca estándar, existe una colección creciente de varios miles de componentes
(desde programas y módulos individuales hasta paquetes y marcos de desarrollo de aplicaciones
completos), disponibles en la página oficial de Python [21][20].
16
6.4 Microcontroladores
Un microcontrolador es como un computador, el cual cuenta con un circuito programable capaz de
ejecutar las ordenes grabadas en su memoria, existen varios tipos de microcontroladores, a
continuación, se mencionarán algunos de ellos:
6.4.1 Microcontrolador PIC
Controlador de interfaz periférica (PIC) proporcionado por Micro-chip Technology para
categorizar sus microcontroladores de chip solitarios. Estos dispositivos han sido exitosos en
microcontroladores de 8 bits. La principal causa detrás de esto es que la tecnología de microchips
ha estado actualizando constantemente la arquitectura de los dispositivos e incluye muchos
periféricos necesarios para el microcontrolador para satisfacer las necesidades de los usuarios. Los
microcontroladores PIC son muy populares entre aficionados e industriales, esto es solo causa de
una amplia disponibilidad, bajo costo, gran base de usuarios y capacidad de programación en serie.
6.4.2 Microcontrolador AVR
AVR también conocido como Advanced Virtual RISC, es una arquitectura Harvard personalizada
de 8 bit. Fue inventado en el año 1966 por Atmel. La arquitectura de Harvard significa que los
datos se acumulan en diferentes espacios y se usan simultáneamente. Fue una de las principales
familias de microcontroladores que empleó memoria flash en el chip básicamente para almacenar
programas, en contraste con EPROM, EEPROM o ROM programables de una sola vez, utilizados
por otros microcontroladores al mismo tiempo. La memoria flash es una memoria programable no
volátil (constante en el apagado).
Existen multiplataformas que generalmente su diseño o hardware consiste en un microcontrolador
AVR, algunas de estas multiplataformas pueden llegar a ser de bajo costo o económicas, lo cual
permite que cualquier persona pueda adquirirlas.
6.4.3 Microcontrolador ARM
ARM es el nombre de una empresa que diseña microprocesadores de arquitectura y adicional a
esto también se dedica a otorgar licencias a los productores que fabrican chips originales. En
realidad, ARM es una arquitectura RISC (de instrucciones reducidas) genuina de 32 bits.
Inicialmente fue desarrollado en el año 1980 por Acorn Computers Ltd. Este microprocesador de
base ARM no tiene memoria flash incorporada. ARM está especialmente diseñado para
dispositivos con microcontroladores, es fácil de entrenar y usar, sin embargo, lo suficientemente
potente como para los dispositivos integrados más desafiantes [22].
17
6.5 Herramientas de Software y Hardware
6.5.1 Pyttsx3
Pyttsx3 es una biblioteca de conversión de texto a voz en Python. A diferencia de las bibliotecas
alternativas, funciona sin conexión y es compatible con Python 2 y 3, es compatible con los motores
de voz que tiene cada sistema operativo, a continuación, se listan los motores de voz junto con los
sistemas operativos correspondientes [23].
• sapi5 – SAPI5 en Windows
• nsss – NSSpeechSynthesizer en Mac OS X
• espeak – eSpeak en cualquier otra plataforma
Pyttsx3 cuenta con múltiples funciones que permiten usar de manera correcta la librería, entre sus
funcionas está pyttsx3.init(), la cual obtiene una referencia a una instancia de motor que usará el
controlador dado. Entre sus funciones se pueden encontrar aquellas que permiten la caracterización
del motor que se está usando, a continuación, se listarán algunas de las funciones o propiedades:
getProperty (): Obtiene el valor actual de una propiedad del motor. En esta función se pueden
modificar los siguientes parámetros
• rate: Tasa de habla entera en palabras por minuto. El valor predeterminado es 200 palabras
por minuto.
• Voice: Identificador de cadena de la voz activa.
• Voices: Lista de pyttsx3.voice.Voiceobjetos descriptores.
• Volumen: Volumen de punto flotante en el rango de 0.0 a 1.0 inclusive. El valor
predeterminado es 1.0.
runAndWait (): Se bloquea mientras se procesan todos los comandos actualmente en cola. Invoca
devoluciones de llamada para las notificaciones del motor de forma adecuada. Devuelve cuando
todos los comandos en cola antes de esta llamada se vacían de la cola.
say (texto: unicode, nombre: cadena): Pone en cola un comando para pronunciar un enunciado.
La voz se emite de acuerdo con las propiedades establecidas antes de este comando en la cola.
setProperty (nombre, valor): Pone en cola un comando para establecer una propiedad del motor.
El nuevo valor de propiedad afecta a todas las expresiones en cola después de este comando.
• Rate: Tasa de habla entera en palabras por minuto.
• Voice: Identificador de cadena de la voz activa.
• Volumen: Volumen de punto flotante en el rango de 0.0 a 1.0 inclusive.
18
6.5.2 Tesseract y pytesseract
• Tesseract
Tesseract se desarrolló originalmente en Hewlett-Packard Laboratories Bristol y en Hewlett-
Packard Co, Greeley Colorado entre 1985 y 1994, con algunos cambios más realizados en 1996
para portar a Windows, y algunos C ++ izing en 1998. En 2005 Tesseract estaba abierto
suministrado por HP. Desde 2006 hasta noviembre de 2018 fue desarrollado por Google.
Tesseract es un motor de reconocimiento de texto de código abierto (OCR), disponible bajo la
licencia Apache 2.0. Tesseract se puede utilizar directamente a través de la línea de comandos o
(para programadores) mediante el uso de una API para extraer texto impreso de las imágenes.
Admite una amplia variedad de idiomas. Tesseract no tiene una GUI incorporada, pero hay varias
disponibles en la página 3rdParty. Las herramientas externas, los envoltorios y los proyectos de
capacitación para Tesseract se enumeran en complementos. Tesseract se puede utilizar en su propio
proyecto, bajo los términos de la Licencia Apache 2.0. Tiene una API con todas las funciones y se
puede compilar para una variedad de objetivos, incluidos Android y iPhone. Consulte las páginas
de 3rdParty y AddOns para ver ejemplos de lo que se ha hecho con él [24].
• Pytesseract
Python-tesseract es una herramienta de reconocimiento óptico de caracteres (OCR) para Python.
Es decir, reconocerá y “leerá” el texto incrustado en las imágenes. Python-tesseract es un
contenedor para el motor Tesseract-OCR de Google. También es útil como un script de invocación
independiente para tesseract, ya que puede leer todos los tipos de imágenes compatibles con las
bibliotecas de imágenes Pillow y Leptonica, incluidos jpeg, png, gif, bmp, tiff y otros. Además, si
se usa como un script, Python-tesseract imprimirá el texto reconocido en lugar de escribirlo en un
archivo. Al igual que las demás librerías y herramientas que ofrece Python, su instalación se realiza
mediante comandos que se ingresan en la consola del sistema o terminal, en ocasiones se presentan
errores en la instalación que impiden el correcto funcionamiento de la librería o paquete, para esto
en la página oficial de donde se obtienen las características de pytesseract, se obtiene la información
necesaria para solucionar esos errores y/o problemas que se presenten [25].
6.5.3 Onshape
Onshape es un programa de diseño CAD 3D en la nube. Fue desarrollado por el equipo de
SolidWord y funciona sobre un navegador, sin necesidad de licencia ni instalación. Por lo tanto, es
independiente del sistema operativo y navegador que se esté usando. En este software, cuando se
crea un proyecto, este queda automáticamente guardado en la nube y los proyectos creados están
siempre “up to date” para que puedan ser modificarlos con el móvil, tablet o navegador web.
Onshape permite a los equipos colaborar en un solo diseño compartido, de la misma manera que
varios escritores pueden trabajar juntos editando un documento compartido a través de servicios
en la nube. Se centra principalmente en CAD mecánico (MCAD) y se utiliza para el diseño de
productos y maquinaria en muchas industrias, incluida la electrónica de consumo, maquinaria
mecánica, dispositivos médicos, impresión 3D, piezas de máquinas y equipos industriales.
19
Las actualizaciones de Onshape se lanzan directamente a la interfaz web y el software no requiere
trabajo de mantenimiento por parte del usuario [26].
Figura 5 Entorno grafico Onshape [Autor]
• En noviembre de 2012, los ex directores ejecutivos de SolidWorks, Jon Hirschtick y John
McEleney, dirigieron un equipo de seis cofundadores que lanzaron Belmont Technology,
un nombre de marcador de posición que luego se cambió a Onshape. La primera ronda de
financiación de la compañía fue de $ 9 millones de North Bridge Venture Partners y
Commonwealth Capital.
• En agosto de 2015, la compañía lanzó su aplicación Onshape para Android.
• En abril de 2016, Onshape presentó su Plan de educación, con una versión gratuita de
Onshape Professional dirigida a estudiantes universitarios y educadores.
• En octubre de 2019, Onshape acordó ser adquirida por PTC
6.5.4 Joystick
El Módulo KY-023 Sensor Joystick es un dispositivo electromecánico consta de dos
potenciómetros en un ángulo de 90 grados, lo que se requiere de 2 pines analógicos para realizar
la interfaz con cualquier tarjeta de desarrollo: Arduino, ESP32, ESP8266, etc.
Este elemento permite el control y manejo de determinados aparatos electrónicos. Normalmente se
utilizan para proyectos robóticos en el cual se necesitan para la movilidad analógica de las
articulaciones de un brazo robótico [27].
20
Figura 6 Modulo Sensor Joystick KY-023 [27].
• Modelo = KY-023
• Tamaño = 37x25x32mm
• Peso = 15 g
• Material = Plástico ABS. Cobre
• Acepta una variedad de tamaños de cable = (29-20 AWG)
• Tamaño = 17.7cm x 4.6cm
21
7. Metodología
En esta sección se describe el procedimiento que se realizó para la elaboración del sistema prototipo
sintetizador de texto a voz, el cual comprende la parte de software, en la cual se realizó el aplicativo
de sintetizador y la parte de hardware, donde se desarrolló un mecanismo acorde a la necesidad de
la población a la que se dirige el proyecto.
7.1 Herramienta de sintetización
Para realizar el software, se inició con la investigación de cómo funciona Python en el área de
sintetizadores y con qué herramientas cuenta para ese tipo de área, se encontró que consta de dos
librerías, Pyttsx3 y gTTS, a continuación, se explicará el funcionamiento de la librería Pyttsx3, y
posteriormente un resumen del funcionamiento de las dos (pyttsx3 y gTTS) y su implementación.
Pyttsx3 es una librería multiplataforma que no requiere de una conexión a internet para su
funcionamiento, pyttsx3 obtiene el motor de voz a través de la inicialización, cuando se llama la
operación “init” por primera vez, se devuelve un objeto de motor pyttsx3, cuando se llama
nuevamente, si hay una instancia de objeto de motor, se usará la existente, de lo contrario, se
volverá a crear uno.
Pyttsx3 puede usar cualquier controlador que se le defina mediante la función “init”, sin embargo,
si no se le indica, pyttsx3 obtiene el motor de voz de acuerdo al sistema operativo en el que se esté
ejecutando, principalmente están SAPI5 para Windows, NSSpeechSynthesizer en MAC OS y
eSpeak en Ubuntu o cualquier otra plataforma.
Para este caso se hizo uso del motor SAPI5, puesto a que la aplicación fue desarrollada en
Windosws, SAPI es un motor de voz, que de acuerdo a las características que presenta para la
manipulación de las voces que contiene, usa un método de síntesis de formantes.
El método de síntesis de formantes construye los sonidos a partir de un modelo físico del tracto
(conducto) vocal a través de un conjunto de filtros excitados por fuentes que simulan las cuerdas
vocales. De acuerdo a la investigación se obtuvo que inicialmente se implementaban trenes de
impulsos o dientes de sierra como entrada al sistema, ahora se implementan modelos matemáticos
que permiten controlar los parámetros de la señal glotal, a continuación, se presenta un modelo de
producción de voz [28].
22
Figura 7 Diagrama de modelo de producción de voz [28].
El modelo de glotis, hace referencia al modelo del espacio limitado que hay entre las cuerdas
vocales verdaderas. Existen diferentes modelos de la glotis, uno de ellos es denominado modelo
exponencial representado por una función transferencia Z de la siguiente forma:
−𝑎𝑒 ln(𝑎)𝑧−1
(1 − 𝑎𝑧−1)2
donde e es la base de los logaritmos neperianos. El numerador es seleccionado de manera que
𝑔(𝑛) = 𝑍−1{𝐺(𝑧)} tenga un valor máximo aproximadamente igual a 1.
De acuerdo a la investigación, se evidenció que los sintetizadores por formantes presentan dos
configuraciones, paralela y en cascada, sin embargo, el mejor resultado se obtiene haciendo una
combinación de estas dos configuraciones, a continuación, se muestran las configuraciones del
sintetizador por formantes. Inicialmente se cuenta con la configuración en cascada o serie, para
este caso se requiere de una fuente de excitación al sistema, esta configuración se conforma por
filtros pasa banda que solo necesitan la frecuencia de los formantes [29].
Figura 8 Sintetizador por formantes en cascada o serie [29].
En la figura 9, se observa la configuración en paralelo, aunque la excitación a los formantes se
realice al mismo tiempo, cada uno de ellos cuenta con una ganancia independiente y a su vez un
ancho de banda que se debe controlar de acuerdo a la salida de audio que se quiera tener
23
Figura 9 Sintetizador por formantes en paralelo [29].
La literatura plantea, que la configuración combinada o PARCAS en un sintetizador por formantes,
puede obtener mejores resultados que su implementación por separado, en la figura 10 se presenta
como es este tipo de configuración.
Figura 10 Sintetizador por formantes configuración combinada [29].
En este caso se listan las variables que tiene el sistema, para saber a qué hacen referencia, las
constantes K se seleccionan para equilibrar las amplitudes de los formantes de las vocales
• F0 y A0 - Frecuencia y amplitud de la componente vocalizada.
• Fn y Qn – Frecuencias formantes y valores de Q (frecuencia formante/ Ancho debanda)
• VL y VH - Amplitud de la componente sonora (baja y alta).
• FL y FH - Amplitud de la componente no vocalizada (baja y alta).
• QN - Q valor de formante nasal a 250 Hz.
De acuerdo al funcionamiento del sintetizador por formantes, se tiene que para la formación de una
palabra se parte de una fuente que excita un sistema compuesto de filtros, y de acuerdo a las
condiciones de frecuencia, amplitud y ancho de banda que se maneje, se emitirá el sonido
24
Una vez explicada la manera en que pyttsx3 selecciona el motor de voz, se procede a dar una
descripción y validación de gTTS y pyttxz3:
Inicialmente se encontró la librería gTTS, lo que significa (Google Text-To-Speech), esta librería
se conecta directamente con la API de Google, por lo cual se puede hacer uso de diversos idiomas
y contar con el procesamiento que realiza Google. Se decide realizar una prueba base con la librería,
la cual se explica mediante el siguiente seudocódigo
Importación de librerías
Función Hablar (parámetro)
Asignación de valor obtenido a variable
Configuración idioma
Designación nombre archivo .mp3
Guardar archivo .mp3
Sonar archivo
Entrada por consola
Ejecución Función Hablar (parámetro)
Realizando la prueba implementando la librería gTTS, se hizo necesaria la implementación de una
librería auxiliar que permitiera sonar o emitir el archivo mp3 que se generó.
Siguiendo con la investigación de herramientas, se encontró la librería pyttsx3, para este caso, la
librería no cuenta con una conexión a la API de Google, sin embargo, al igual que con la anterior
herramienta, se realizó una prueba para evidenciar su funcionamiento, para ello se realizó el
siguiente algoritmo
Importar librería
Función Hablar (parámetro)
Sonar parámetro
Esperar un tiempo
Inicialización motor sintetizador
25
Entrada por consola
Ejecución Función Hablar (parámetro)
De acuerdo a la información adquirida y a la implementación de las dos herramientas o librerías,
se realizó una comparación de algunas de sus características, en la tabla 2 se evidencia esta
comparación, de la cual se decide implementar la librería Pyttsx3, ya que no requiere de una librería
auxiliar para permitir la emisión de audio, adicional a esto, aunque no cuenta con la API de Google,
no requiere de una conexión a internet, lo cual haría que su ejecución se pueda realizar en cualquier
ámbito.
gTTS Pyttsx3
Requiere de conexión a internet No requiere de conexión a internet
Interacción con API de texto a voz de Google
Translate Guarda el audio como archivos mp3
Guarda el audio como archivos mp3 Modificación de propiedades de audio
Diferentes idiomas Diferentes idiomas
Tabla 2 Comparación de librerías
7.2 Desarrollo de algoritmo para aplicativo de sintetizador de texto a voz
El desarrollo de estos algoritmos se realizó de manera paralela en el software Python versión 3.6,
teniendo en cuenta que se realizaron en diferente script para realizar su unificación en uno solo, se
implementó el método de “Hilos”, el cual permite que en un solo script se puedan ejecutar de
manera paralela dos programas sin que interfieran el uno en el otro, esto se realiza mediante la
implementación de la librería threading de Python.
Importar librería
Función Hilo 1 ()
Algoritmo sensor joystick
Función Hilo 2 ()
Algoritmo sintetizador
Declaración Función Hilo 1 Ejecución Función 1
26
Declaración Función Hilo 2 Ejecución Función 2
7.2.1 Desarrollo algoritmo sintetizador
De acuerdo a las validaciones realizadas a las herramientas de Python (pyttsx3 y gTTS), se
determinó que la librería más adecuada para la realización de la aplicación era pyttsx3, debido a
que no tiene la limitación de que depende de una conexión a internet, y adicional a esto, ella misma
cuenta con las funciones para la emisión del sonido. El funcionamiento del algoritmo se puede
interpretar de acuerdo al siguiente diagrama, de acuerdo a las necesidades o acciones que requiera
realizar la persona que lo ejecute.
Figura 11 Diagrama de flujo del funcionamiento del algoritmo [Autor]
De acuerdo al diagrama de flujo que se presenta en la figura 11, se tiene que la opción inicial en el
funcionamiento del algoritmo, es la redacción del texto, donde se requiere el ingreso de los datos
para proceder con la conformación del texto y finalmente realizar el proceso de síntesis, sin
embargo si no se inicia con la redacción del texto, se tiene la opción de obtener el texto de una
imagen, para ello el algoritmo espera que el usuario decía cargar la imagen, una vez tomada la
decisión se procede a la selección de la imagen que se quiere y mediante el reconocimiento óptico
27
de caracteres obtener el texto de la imagen, luego de ello el algoritmo sigue al proceso de síntesis
de texto a voz. Si no se inicia por la redacción de texto o la opción de trabajar con una imagen, se
tiene una tercera opción que es un listado de frases, allí el algoritmo espera que el usuario
seleccione la frase que desea y luego de esto pasa al proceso de síntesis para finalmente emitir el
sonido, también está la opción de iniciar el algoritmo mediante el ingreso de frases, para este caso,
se espera que el usuario ingrese las frases que quiera o considere de más utilidad, son almacenadas
en una lista, luego de esto el algoritmo espera que se seleccione una de ellas para proceder con la
síntesis de texto a voz y emitir el sonido. Si no se inicia con esta última opción, el algoritmo sigue
en espera de que el usuario decida qué acción quiere realizar.
Inicialmente se realizó la configuración de la librería pyttsx3, para ello se implementaron las
siguientes líneas:
• engine = pyttsx3.init()
• voices = engine.getProperty('voices')
• engine.setProperty('voice', 'spanish-latin-am+f1')
• rate = engine.getProperty('rate')
• engine.setProperty('rate', rate+30)
Esta configuración lo que permite es iniciar el motor de voz, en este caso toma por defecto el del
sistema operativo, seguido a esto se le asignó el tipo de voz que se quiere usar y por último la
velocidad de reproducción de las palabras.
Luego para el ingreso de texto, se realiza la construcción de un teclado donde todas las teclas se
dirigen al mismo command o función, para este paso se implementó una función lambda que
permite obtener las letras del teclado y realizar su concatenación, en este caso, cada que el usuario
efectúe un “espacio” o un “punto”, el sintetizador sonará la palabra anteriormente escrita. A
continuación, se observa un seudocódigo de la función.
Función Hablar ()
Declaración variables
Frase = Obtener lo que hay en el panel de texto
Recorrer Frase
Si Frase = ‘ ‘ o Frase = ‘.’
Almacenar posiciones
Frase2 = Frase [posiciones almacenadas]
Decir (Frase2)
Esperar
28
En este caso, se implementaron dos parámetros más de la librería pyttsx3, el primero es el
encargado de sonar o decir lo que se encuentra en la instancia del motor de voz, y el segundo da
una espera en el programa hasta que se haya terminado de reproducir la palabra o frase.
• engine.say ()
• engine. runAndWait ()
Posterior a esto, se realizó la parte de síntesis a partir de imágenes, para ello se implementó el
reconocimiento óptico de caracteres mediante las herramientas pytesseract y Tesseract-ORC, las
cuales permiten la extracción de texto de una imagen, para este caso, se empleó un botón auxiliar
que permite reproducir el texto que se ha extraído, de igual manera en la función del botón se
emplea la línea “engine.say ()”
Figura 12 Extracción de caracteres de imagen [Autor]
Luego, el algoritmo presenta una sección en la que se trabajan frases predeterminadas, para este
caso se cuenta con un listado de frases, que se consideran las más usadas en una conversación, se
realizó una barra de herramientas, donde se separaron las frases por categorías, saludos, respuestas,
preguntas y despedidas, cada frase está asociada a un command o función, que obtiene el string de
la frase que se seleccionó y lo suena mediante la función “engine.say ()”
Por último, el algoritmo para el aplicativo de sintetizador de texto a voz, cuenta con la opción de
que el usuario pueda adicionar las frases que el más emplea, para esto se realizaron tres funciones,
una de agregar frase, otra de eliminar frase y otra de sonar la frase, las frases agregadas por el
usuario se visualizan en una Listbox y en un archivo de texto, para tener registro de las frases y no
recurrir a ingresarlas nuevamente cada que se ejecute la aplicación, a continuación se presentan las
funciones correspondientes:
29
Adicionar frase
Inicialmente se cuenta con la función de agregar frase, para este caso se define la función, una vez
se ejecute, se obtiene el string que se encuentre en el panel de texto y es añadido al final de la lista
que se encuentra en la interfaz, luego de esto, el algoritmo manipula el archivo de texto donde se
guardarán las frases que el usuario ingrese, para este caso se escribirá en el archivo la frase que el
usuario acabe de ingresar, a continuación se presenta un seudocódigo del funcionamiento de la
función agregar
Función agregar frase ()
Obtener lo que contiene el panel de texto
Insertar en la posición final de la lista
Abrir archivo de texto a través de la opción de escritura
Escribir en el archivo la frase obtenida
Guardar cambios
Eliminar frase
Para la acción de eliminar una frase de la lista que ya no se requiera, se inicia la función eliminar,
una vez se ejecute, procede a recorrer toda la lista y detecta cuál de las frase que se contienen fue
seleccionada, una vez detectada la frase obtiene el índice de posición de ésta y procede a eliminarla
de la lista, al borrar la frase de la lista, se debe eliminar igualmente del archivo de texto, para ello
el algoritmo manipula el archivo de texto obteniendo el número de líneas que contiene el archivo,
luego de ello se le indica que obtenga la línea que corresponde al ítem de la frase a eliminar y la
borre, una vez eliminada la frase, se corre la posición de las demás líneas que tiene el archivo de
texto, estas acciones se reflejan por medio del siguiente seudocódigo
Función eliminar frase ()
Recorrer Lista de frases
Obtener ítem de la frase seleccionada
Eliminar frase seleccionada de la Lista
Abrir archivo de texto a través de la opción de lectura
Obtener número de líneas del archivo
Abrir archivo de texto a través de la opción de escritura
30
Encontrar la línea correspondiente al ítem
Eliminar línea del archivo
Correr la posición de las demás frases
Guardar cambios
Sonar frase
Finalmente, se define la función de sonar frase, al ser ejecutada esta función, recorre la lista donde
se contienen las frases para saber el ítem de la frase que se está seleccionando y así mediante ese
valor de posición, obtener la frase que le corresponda, una vez se tiene la frase, se procede a emitir
el sonido y se espera mientras este termina de reproducirse, a continuación, se presenta un
seudocódigo de esta función
Función sonar frase ()
Recorrer Lista de frases
Obtener ítem de la frase seleccionada
Obtener frase del ítem
Reproducir frase seleccionada de la Lista
Esperar
7.2.2 Desarrollo algoritmo para prototipo
El desarrollo del algoritmo para el prototipo se definió de acuerdo a los métodos que se mencionan
en la sección 7.3, de los cuales uno de ellos permitió la integración del algoritmo del prototipo
dentro del programa principal de la aplicación.
7.3 Desarrollo de prototipo para la manipulación del aplicativo sintetizador
En la elaboración del prototipo fue de gran importancia tener en cuenta el cómo se comunican las
personas que no pueden hablar y a su vez no pueden hacer uso de las manos o brazos, en esto se
encontró que existen centros especializados que les enseñan a manejar los pies para así manipular
las cosas, como lo puede ser una Tablet o un lápiz, o en otros caso hacen uso de la boca para
manipular el lápiz, es por esto, que el prototipo se enfoca en una manipulación con la quijada, y
como una segunda opción o alternativa , se adecúa un mouse para una manipulación con el pie.
31
Para la propuesta principal, la cual es la manipulación con la quijada, el desarrollo se dio mediante
el seguimiento del diagrama de bloques que se presenta a continuación:
Figura 13 Diagrama de bloques para desarrollo de prototipo [Autor]
Inicialmente se procedió con la búsqueda de un sensor o dispositivo que sirviera para simular un
mouse, mediante la búsqueda se encontró un módulo sensor joystick, el cual permite un
desplazamiento en las coordenadas x, y, y a su vez cuenta con un pulsador, el cual sirve para la
simulación del clic que se requiere en un mouse.
Figura 14 Modulo Sensor Joystick KY-023 [27]
Este módulo cuenta con la ventaja de que es de fácil implementación y adicional a ello es de bajo
costo, lo cual hace posible que cualquier persona pueda adquirirlo y manipularlo sin inconveniente.
7.3.1 Método de microcontrolador como HID
Este método consta de la configuración del microcontrolador como un dispositivo de interfaz
humana (HID), lo cual permite que, al conectar la tarjeta al computador, este la reconozca como
un teclado o un mouse.
Para este caso, se implementó un programa en el microcontrolador para adquirir los datos del
módulo sensor Joystick, y que fueran enviado mediante el puerto serial, luego de cargar el programa
a la tarjeta, mediante el software “Flip” se le cargó un archivo de extensión .hex correspondiente a
Selección de sensor
Adaptación del sensor
Diseño de prototipo
Implementación
32
la función de un mouse, el cual permitió convertir el microcontrolador en HID y de esta manera el
computador lo reconoció como un mouse. Este método se seccionó en dos etapas como se muestra
en al diagrama de la figura 15.
Figura 15 Etapas del método HID
La primera etapa que se refleja en el diagrama de la figura 15 comprende el algoritmo del módulo
sensor, este algoritmo adquiere los datos del módulo de acuerdo a los pines que se definieron, una
vez obtenidos los datos se hacen validaciones para determinar si cumple con ciertos rangos o
condiciones de acuerdo al valor obtenido del módulo sensor, una vez validados los valores,
mediante la implementación del protocolo serial se envía el valor de posición del sensor al
computador, a continuación se presenta un diagrama de flujo del algoritmo implementado
Algoritmo para el modulo sensor
joystick
Configuración para HID
33
Figura 16 Diagrama de flujo algoritmo modulo sensor
De acuerdo a la figura 16, el algoritmo parte te la lectura de datos emitidos por el módulo sensor,
seguido de esto comienza con una validación de acuerdo al pin que esté recibiendo la variación de
valor, eso puede variar entre si se está leyendo el pulsador, o los valores emitidos para los ejes X y
Y, de acuerdo al valor que se reciba, el algoritmo hace una comparación para saber si las
coordenadas y el estado del pulsador variaron, de acuerdo al resultado de la variación, se asigna el
nuevo valor o el nuevo estado a las variables que se le envían al computador mediante el protocolo
de comunicación serial.
34
La segunda etapa de este método comprende la configuración que se debe realizar para volver el
microcontrolador un dispositivo HID, para esto se implementó el programa Flip, que es para
programar microcontroladores AVR, con ayuda de este software se le instala un archivo al
microcontrolador para que el computador lo reconozca como un dispositivo HID, el archivo que se
le instala o programa al microcontrolador se obtuvo de internet.
7.3.2 Método de Microcontrolador – Python
Este método consiste en realizar una comunicación entre el microcontrolador y Python mediante
el puerto serial, de esta manera se le envían los parámetros del sensor a Python, y allí al ejecutarse
el programa, junto con la información que se recibió, se puede controlar el movimiento y clic del
cursor, en este caso el computador sigue reconociendo el microcontrolador como dispositivo en el
puerto COM. Para este caso no es necesario flashear o cargar archivos adicionales al
microcontrolador para que se comporte como un HID. En este caso, de acuerdo a la figura 17, el
método consiste en el envío de datos que se realizan desde el microcontrolador a Python, esto se
explicara en dos secciones.
Figura 17 Secciones de método Microcontrolador y Python
La primera sección consiste en el algoritmo implementado en el microcontrolador, para este caso
se referencia el diagrama de flujo que se presenta en la figura 16, ya que se implementó el mismo
principio de algoritmo, en cuanto a la lectura del sensor, la validación de los valores obtenidos con
las referencias establecidas y finalmente el envío de datos a través del serial, para este caso el
algoritmo solo presentó una modificación que consiste en un dato para variar la sensibilidad del
módulo sensor.
La segunda sección consta del algoritmo implementado en Python para obtener los valores del
sensor y que se comporte como mouse, para su explicación, ser hará uso de la figura 18, la cual
presenta un diagrama de flujo del algoritmo, para hacer uso de los datos recibidos como mouse, se
requiere la importación de la librería mouse en Python.
Inicialmente se tiene la especificación del puerto COM del que se van a recibir los datos, este puerto
se obtiene al conectar el microcontrolador al computador, luego de ello, el algoritmo cuenta con un
tiempo de 1 segundo para establecer la conexión entre el puerto serial y Python, una vez establecida
la conexión, se comienzan a leer o recibir los datos que el microcontrolador está enviando, luego
estos datos son asignados a las variables correspondientes de posición y la obturación del módulo
sensor para simular el clic, si los valores son de posición, el cursor se moverá de acuerdo a las
coordenadas que se estén recibiendo, si el valor es de obturación, el cursor ejecutará la función de
clic
Microcontrolador Python
35
Figura 18 Diagrama de flujo programa Python
7.3.3 Diseño de piezas para el prototipo
Teniendo en cuenta que el prototipo se va a manipular con la quijada, se realiza un soporte para la
quijada, el cual va adherido a un cilindro de acople, el cual cuenta con un orificio en uno de sus
extremos para encajar con el módulo sensor joystick. Para la elaboración de las piezas del prototipo,
inicialmente se tomó la medida de curva inferior de la cara de 5 personas entre los 20 y 70 años,
esta medida se realizó por debajo de la mandíbula, de una punta de la oreja hasta la otra, de esto se
obtuvo un valor promedio de 20 cm. De acuerdo a este valor se realiza el soporte para la mandíbula,
el cual es un arco o media circunferencia, sin embargo, se incrementan 2 cm más del valor obtenido
para que la pieza no quede ajustada a la cara de las personas.
En la figura 19 se observa una ilustración 3D del soporte de la mandíbula realizado, cuenta con un
diámetro de 14, 5 cm, una curvatura de 22 cm y un ancho de 2,5 cm
36
Figura 19 Soporte para mandíbula [Autor]
Para la elaboración del cilindro de acople, se estimó una altura aproximada de 26 cm entre la parte
superior de una mesa y la mandíbula de la persona, a partir de ello, se toma la medida de 20 cm
para el cilindro, puesto a que el módulo sensor compensa el valor restante. El cilindro se diseña
macizo exceptuando 2 cm, que es donde se acopla el módulo sensor joystick.
Figura 20 Cilindro de acople [Autor]
Para compactar las piezas del prototipo, se diseñó una caja de acorde a las dimensiones que ocupa
el microcontrolador y el módulo sensor joystick, la caja cuenta con un orificio para la alimentación
del microcontrolador. Se realizo el diseño de una tapa, la cual consta con un orificio en la zona del
joystick, permitiendo libertad de movimiento del sensor a través del cilindro de acople. Todas las
piezas fueron diseñadas a través de la herramienta online Onshape,
37
Figura 21 Caja y tapa para compactar el prototipo [Autor]
7.4 Diseño de interfaz gráfica de usuario
La interfaz gráfica de usuario fue desarrollada mediante la implementación de la librería Tkinter,
haciendo uso de diversos Widgets. En la figura 22 se puede observar de manera general la interfaz.
Figura 22 Interfaz de usuario [Autor]
A continuación, se explicará cada sección que compone la interfaz de usuario:
1. Frases predeterminadas
Esta parte de la interfaz se compone por un menú de herramientas, el cual cuenta con cuatro listas
desplegables, las cuales son saludos, respuestas, preguntas y despedidas, cada una de ellas contiene
las frases que más se frecuentan de acuerdo a cada una de esas ocasiones, al dar clic sobre alguna
38
de las frases que contenga la barra de menú se reproducirá esa frase seleccionada. En las siguientes
figuras se pueden observar las listas de frases que tiene la aplicación
Figura 23 Lista de frases de saludos [Autor]
Figura 24 Lista de frases de respuesta [Autor]
Figura 25 Lista de frases de preguntas [Autor]
39
Figura 26 Lista de frases de despedidas [Autor]
2. Panel de texto y teclado
La sección del panel de texto y el teclado, es la parte principal de la interfaz, pues allí es donde el
usuario redactará lo que quiere comunicar mediante el sintetizador, en el panel se mostrará todo lo
que se esté escribiendo por medio del teclado, una característica importante de resaltar, es que la
tecla o botón donde esté situado el cursor se resalta en color azul, de esta manera el usuario sabrá
si está ubicado en la tecla que quiere, en la figura 27 se evidencia el panel de texto y el teclado
Figura 27 Panel de texto y teclado de interfaz [Autor]
En las funciones del teclado, se encuentran las opciones de borrar, que borrar (DELETE) letra por
letra, también está la función borrar todo (DELETE ALL), la cual limpia todo el panel de texto. Se
40
cuenta también con la función de SELECCIONAR, mediante la cual se selecciona un fragmento
de texto que se quiera copiar, para hacer uso de la función SELECCIONAR, primero el usuario
debe ubicarse en el inicio de la frase, luego obturar el botón, posteriormente se debe ubicar al final
de lo que quiere seleccionar y obturar nuevamente el botón, cuando esto suceda se habilita el botón
COPIAR, lo cual permitirá almacenar la frase seleccionada, para luego mediante el botón PEGAR
ubicarla donde el usuario quiera.
3. Extracción de texto de una imagen
En esta sección, se encuentra el botón que se ve en la figura 28, mediante la obturación de éste, se
abre un explorador de archivos, el cual permite la navegación en el computador para buscar la
imagen que requiera el usuario.
Figura 28 Botón para buscar imagen y botón de reproducir el texto [Autor]
Una vez seleccionada la imagen, se realiza el proceso de extracción de caracteres de la imagen y
se visualizan en el panel de texto
Figura 29 Texto extraído de imagen e imagen original [Autor]
Luego de que se extrae el texto, mediante el botón Reproducir, que se encuentra abajo del de
imagen, se reproduce el texto que se obtuvo en el panel
41
4. Frases definidas por el usuario
En esta sección el usuario puede agregar las frases que el considere de más uso y tenerlas a la mano,
con el propósito de no tener que redactarlas siempre, en la figura 30 se puede observar la
distribución que tiene esta sección de la interfaz:
Figura 30 Sección frases definidas por usuario [Autor]
1. Panel de texto: En este caso, se tiene un panel de texto más pequeño, en el cual el usuario
mediante el teclado principal de la interfaz, va a escribir la palabra que quiere añadir a la
lista.
2. Agregar: El botón agregar cumple con la función de añadir a la lista y a un archivo, la
palabra ingresada por el usuario
3. Reproducir: Una vez el usuario seleccione alguna de las frases que se presenten en la lista,
mediante este botón se emitirá la palabra seleccionada
4. Eliminar: Esta opción permite eliminar cualquier frase que el usuario desee, para ello
primero la debe seleccionar y luego si obturar el botón de eliminar
5. Lista: En esta sección se visualizarán las frases añadidas por el usuario
42
8. Resultados
En esta sección se mostrará el resultado que se obtuvo para la solución del problema planteado
inicialmente, el cual era la comunicación entre personas con condiciones normales y personas con
limitación vocal y motriz en miembros superiores. Esta sección se divide en cuatro etapas, la
primera mostrará el resultado de manera general, la segunda comprenderá las restricciones que se
presentaron en la solución, la tercera comprende la validación del funcionamiento del sistema, y la
última trata del impacto que tiene la solución obtenida.
8.1 Diseño definitivo
Como resultado final se obtuvo una aplicación de sintetizador de texto a voz, la cual cuenta con
varias funciones que le permiten al usuario transmitir su idea o lo que quiere comunicar, esta
aplicación de sintetizador es manipulada mediante un prototipo de mouse diseñado para la
condición de las personas a las que se dirige el proyecto, este prototipo consta de un módulo sensor
joystick y un microcontrolador, con el fin de que sea un prototipo de fácil acceso y practicidad
para quien lo requiera usar o quien quiera elaborarlo, este prototipo es manipulado mediante
movimientos ejercidos por la mandíbula, en la figura 31 se observa el prototipo obtenido
Figura 31 Prototipo obtenido junto con el aplicativo sintetizador [Autor]
Adicional a ello, se realizó una modificación a un mouse, con el fin de adaptarlo a las condiciones
que presentan las personas a las que va dirigido el proyecto, para ello se le acondiciona un pedal,
el cual cuenta con un pulsador interno que se encuentra conectado al pulsador izquierdo original
del mouse, para que de este modo la persona pueda hacer uso de él mediante los pies, en la figura
32 se presenta la alternativa de mouse,
43
Figura 32 Mouse acondicionado [Autor]
8.2 Restricciones de la solución
Las restricciones que presenta sistema sintetizador de voz para personas con discapacidad vocal y
limitación motriz, se basan en las pruebas o validaciones realizadas
• La pausa que tiene la aplicación al emitir el sonido es extensa e impide ir haciendo
uso de otras herramientas de la aplicación
• El prototipo no es ajustable a la altura de la persona que lo esté usando, por esta
razón la manipulación del mismo puede tornarse incomoda y complicada.
• El diámetro del soporte de la mandíbula no es ajustable, por lo cual presenta una
limitación en los rangos de edad de las personas que vayan a hacer uso del prototipo
8.3 Validación del resultado
Para validar el funcionamiento del sistema de sintetizador, se hizo uso de un grupo de 5 personas,
las cuales oscilaban entre los 20 y 45 años, cuatro de estas personas, contaban con condiciones
normales, por lo cual debían simular las condiciones de discapacidad de las personas a las que se
dirige el proyecto. La persona restante cuenta con las condiciones de discapacidad.
8.3.1 Prueba de practicidad
Inicialmente se realiza una prueba de practicidad, entre el prototipo diseñado y la adaptación del
mouse, esta prueba consiste en manipular la aplicación del sintetizador mediante los dos
mecanismos.
Al realizar la prueba se le pide al usuario escribir la siguiente frase “La cortesía es la principal
muestra de cultura”, para este caso la validación fue realizada por cuatro personas que simularon
las condiciones de discapacidad, primero se realizó la prueba con el prototipo diseñado, de esto se
obtuvieron los datos que se muestran en tabla 3
44
Tiempos con prototipo (min)
Usuario 1 Usuario 2 Usuario 3 Usuario 4
Intento 1 4,5 3,52 5,27 4,64
Intento 2 3,27 3,56 3,58 3,54
Intento 3 3,28 3,16 3,29 3,31
Tabla 3 Tiempos obtenidos de prueba con prototipo
La tabla 3 representa los valores de tiempo (en minutos) obtenidos para cada usuario en los tres
intentos que realizaron para la redacción de la frase, graficando esto valores se obtiene la siguiente
representación
Figura 33 Gráfica de tiempos de acuerdo al número de pruebas con prototipo
De acuerdo al grafico obtenido, se puede evidenciar que, al realizar más intentos o pruebas, la
persona se adapta al prototipo y de esta manera reduce el tiempo en el que escribe la frase.
Figura 34 Usuario validando el sistema
Luego, se repitió la prueba, pero en este caso no se implementó el prototipo, sino el mouse
acondicionado, de este modo se obtuvieron los siguientes valores de tiempo (en minutos)
45
Tiempos con mouse acondicionado (min)
Usuario 1 Usuario 2 Usuario 3 Usuario 4
Intento 1 1,35 2,26 2,4 2,42
Intento 2 1,1 2,06 2,41 2,37
Intento 3 1,19 1,28 2,39 2,26
Tabla 4 Tiempos obtenidos de prueba con mouse acondicionado
Para realizar las pruebas con el mouse acondicionado, se debe ubicar éste en el suelo, pues su
manipulación es realizada mediante los pies, en la figura 35 se muestra como se hizo uso de este
mecanismo
Figura 35 Manipulación de mouse acondicionado
Graficando los valores obtenidos en esta prueba, se tiene la siguiente representación
Figura 36 Gráfica de tiempos de acuerdo al número de pruebas con mouse acondicionado
De acuerdo a la gráfica se ve que los tiempos son más cortos que con el prototipo, y en este caso
se evidencia que algunos usuarios presentan constancia en el tiempo que demoran en redactar la
frase.
Posterior a los resultados obtenidos, se les preguntó a los usuarios que de acuerdo a su experiencia
cuál de los dos le resultó más práctico y por qué, teniendo como resultado que a los 4 usuarios les
46
pareció más fácil el uso del mouse acondicionado, sin embargo, recalcan que para una persona con
discapacidad es mucho más aplicable el mecanismo del prototipo.
La quinta persona que participó en las pruebas, cuenta con una discapacidad de parálisis cerebral,
la cual le impide hablar de manera clara y tener control en los movimientos de sus extremidades,
puesto a que presenta movimientos involuntarios, lo cual le dificulta tener total control sobre el
prototipo y la alternativa de mouse acondicionado.
Para esta persona se realizó una prueba específica, que consistía en obtener el tiempo que demoraba
en escribir una sola palabra mediante el mecanismo del prototipo, para este caso la frase que se
seleccionó es “eucalipto”, la prueba se repitió tres veces, obteniendo los valores que se muestran
en la tabla 5
Figura 37 Usuario con discapacidad validando el sistema sintetizador y el prototipo [Autor]
Tiempos obtenidos con prototipo (min)
Intento Tiempo
1 3,56
2 3,23
3 2,54
Tabla 5 Tiempos obtenidos en prueba para persona discapacitada usando el prototipo
De acuerdo a los valores obtenidos, se evidenció que para la redacción de una palabra que consta
de 9 letras, una persona con las condiciones y limitaciones que presenta el usuario, va a tardar
aproximadamente 4 minutos en redactarla, también se evidencia que al realizar más intentos la
persona pudo presentar mayor control del prototipo, sin embargo, necesitó de la ayuda de otra
persona para que le ayudara a sostener el prototipo para su uso.
8.3.2 Prueba de palabras por minuto
Al igual que en la anterior prueba se les pide a los usuarios redactar la frase en el aplicativo del
sintetizador, mediante los dos mecanismos. Para este caso se extrae el número de palabras que
contiene la frase y se calcula cuantas palabras por minuto se pueden escribir en el aplicativo
sintetizador, teniendo en cuenta los valores de tiempo obtenidos en la anterior prueba, se realiza la
siguiente operación para obtener la cantidad de palabras por minuto
47
𝑝𝑚 = 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑝𝑎𝑙𝑎𝑏𝑟𝑎𝑠 𝑒𝑛 𝑙𝑎 𝑓𝑟𝑎𝑠𝑒
𝑚𝑖𝑛𝑢𝑡𝑜𝑠
Figura 38 Usuario simulando condiciones de discapacidad para la validación del sistema [Autor]
En la figura 38, se evidencia al usuario haciendo la prueba de palabras por minuto, para este caso
él simuló las condiciones de discapacidad, sin embargo, decide hacer uso de un soporte para el
prototipo.
Para este caso el número de palabras corresponde a 8, y los minutos son los que se encuentran en
la tabla 3
Numero de palabras por minuto con prototipo Usuario 1 Usuario 2 Usuario 3 Usuario 4
Intento 1 1,77777778 2,27272727 1,51802657 1,72413793
Intento 2 2,44648318 2,24719101 2,23463687 2,25988701
Intento 3 2,43902439 2,53164557 2,43161094 2,41691843
Tabla 6 Palabras por minuto implementando el prototipo
Se realiza la misma operación para los valores de tiempo de la tabla 4, teniendo como resultado los
datos de la tabla 6
Numero de palabras por minuto con mouse acondicionado
Usuario 1 Usuario 2 Usuario 3 Usuario 4
Prueba 1 5,92592593 3,53982301 3,33333333 3,30578512
Prueba 2 7,27272727 3,88349515 3,31950207 3,37552743
Prueba 3 6,72268908 6,25 3,34728033 3,53982301
Tabla 7 Palabras por minuto implementando el mouse acondicionado
Análisis:
Como se pudo observar mediante la implementación del mouse acondicionado se logró la mayor
cantidad de palabras por minuto, lo cual corresponde a un valor de 7.27, lo cual se podría interpretar
como 7 palabras y media, es decir que para ese caso el usuario redactó 7,27 palabras en 1,1 minutos,
por lo que se puede decir que casi logra escribir la frase completa en 1 minuto. Implementando el
48
prototipo diseñado, se obtuvo que el valor máximo de palabras por minuto fue de 2.53,
correspondiente a un tiempo de 3.16 minutos, lo cual si muestra una diferencia notoria en cuanto
al otro mecanismo.
8.4 Evaluación del impacto de la solución
El sistema sintetizador de texto a voz junto con el prototipo desarrollado, funcionan como una
herramienta de apoyo para las personas que presentan dificultades a la hora de comunicarse de
manera verbal, cabe mencionar que este sistema se realizó de manera tal que fuera de fácil acceso
y uso para todos los usuarios que lo requieran, pues es importante desarrollar algo que realmente
las personas puedan adquirir y manipular sin inconveniente, para su beneficio.
La implementación de este sistema en general, puede ayudar a mejorar la condición de
comunicación de las personas que presentan discapacidad vocal y motriz en sus miembros
superiores, requiere de más adaptaciones, las cuales se mencionarán más adelante, pero de acuerdo
a la experiencia de validación del funcionamiento por una persona con estas discapacidades, si es
útil y beneficioso para esta población.
49
9. Conclusiones
La librería pyttsx3 permite la elaboración de un sintetizador de texto a voz de bajo costo, debido a
que se trabaja con software libre, además de esto no requiere de conexión a la red, haciendo que el
sistema sea portable sin ningún inconveniente y pueda hacerse uso de él en cualquier localización,
también se resalta que mediante la implementación de la librería se puede llegar a obtener el archivo
de audio de la sintetización que se esté realizando.
Aunque el prototipo diseñado permite las personas con limitación motriz en miembros superiores
y limitación vocal se comuniquen con una persona oyente, presenta ciertas limitaciones para su
uso, dado a que el prototipo no tenía la opción de adaptarse a una superficie se requirió de alguien
más que pudiera sostenerlo para que el usuario con discapacidad hiciera uso de él.
El desarrollo de la interfaz permite que al usuario tener una interacción más dinámica con el
sintetizador de texto a voz, pues cuenta con funciones como la extracción de texto a partir de
imágenes, o la misma personalización que el usuario quiera hacer mediante la opción de agregar
sus frases predeterminas.
Realizando las pruebas de validación de prototipo mediante personas con condiciones normales, se
evidenció que mientras la persona se va adaptando al prototipo, los tiempos de escritura de texto
para el sintetizador, van a ser altos en comparación con otros mecanismos, como lo fue con la
adaptación de un mouse.
Debido a que la librería implementada usa el motor de voz del sistema operativo en el que se
encuentra, hace que la sintetización se realice sin complicaciones u obstáculos, pues no se requiere
descargar ningún otro componente para su ejecución, sin embargo, si se quiere se pueden adicionar
voces al motor de voz del sistema operativo, y desde el programa hacer selección de la voz que se
quiera usar.
A través de la investigación realizada para el desarrollo del proyecto, se supo que el motor de voz
del sistema operativo en el que se realizó el sintetizador, cuenta con una síntesis por formantes, lo
que implica que se basa en un modelo acústico que crea el habla a partir de la excitación del sistema
por medio de ondas, las cuales se someten a filtros para finalmente tener el sonido, el sonido que
se reproduce es robótico.
Aunque el sonido reproducido mediante la síntesis por formantes no suena muy humano, igual es
inteligible y tiene la ventaja de que no requiere una base de datos con audios previos para su
emisión, como lo que sucede en el método de síntesis concatenativa.
Al realizar el prototipo que permitiera hacer uso de la aplicación mediante un sensor, se contaron
con diferentes opciones de microcontroladores y sensores, sin embargo, se hizo uso de uso de un
módulo sensor joystick y un microcontrolador, con el fin de que el prototipo fuera de fácil uso y a
su vez no presentara costos elevados, puesto a que la idea de su implementación, es que sea un
elemento de fácil acceso y adaptabilidad para quien haga uso de él.
50
10. Recomendaciones
Como trabajo a futuro, en cuanto a la aplicación, se tiene como aspecto a mejorar la parte de emitir
el sonido de la palabra que se está sintetizando, puesto a que cuando se ejecuta esa función, el
sistema tiende a detenerse un poco y no permite hacer uso de ninguna otra herramienta del
aplicativo, otra cosa a mejorar, de acuerdo a la experiencia de los usuarios, es integrar las funciones
que se pueden realizar con un teclado convencional, es decir comandos, alternar de mayúsculas a
minúsculas, entre otras.
En cuanto al prototipo, como trabajo a futuro se espera rediseñar las piezas, de manera que pueda
ser un sistema ajustable de acuerdo a las características físicas que presenta el usuario, para que de
esta manera no haya limitación en la edad de quienes puedan hacer uso de él, y que también se
pueda ajustar el cilindro de soporte de acuerdo a la altura que se requiera.
51
11. Referencias
[1] O. M. de la Salud, “Sordera y pérdida de la audición.” [Online]. Available:
https://www.who.int/es/news-room/fact-sheets/detail/deafness-and-hearing-loss.
[2] Ministerio de Salud, “Sala situacional de las Personas con Discapacidad (PCD) Ministerio
de Salud y Protección Social Oficina de Promoción Social,” p. 34, 2018.
[3] Ministerio de Salud y Protección Social, “Boletines Poblacionales: Personas con
Discapacidad,” pp. 1–15, 2020.
[4] A. Gupta and S. Jagadish, “Machine learning oriented gesture controlled device for the
speech and motion impaired,” 2017 Int. Conf. Data Manag. Anal. Innov. ICDMAI 2017, pp.
294–297, 2017.
[5] P. G. Ahire, K. B. Tilekar, T. A. Jawake, and P. B. Warale, “Two way communicator
between deaf and dumb people and normal people,” Proc. - 1st Int. Conf. Comput. Commun.
Control Autom. ICCUBEA 2015, pp. 641–644, 2015.
[6] G. Adiline Macriga, K. Kruthiga, and S. Anusudha, “Artificial Voice synthesizer using fuzzy
logics,” Proc. 2017 2nd Int. Conf. Comput. Commun. Technol. ICCCT 2017, pp. 388–392,
2017.
[7] L. J. Mona Peña, J. A. Alvarado Bustos, and O. Mendez Hernandez, “Software
decodificador de texto a voz para ayuda a personas con capacidades diferentes,” Res.
Comput. Sci., vol. 74, no. 1, pp. 73–79, 2014.
[8] S. G. Francisco, D. O. Sánchez, G. En, I. Informática, and L. G. Salvador, “Software para la
comunicación de personas con dificultad de movimiento,” 2017.
[9] C. O. U. S. Rfid, “D Esign and I Mplementation of a V Ehicular a Ccess,” 2017 IEEE Int.
Conf. Power, Control. Signals Instrum. Eng., no. November, pp. 223–225, 2006.
[10] Taiwan zhi shi chuang xin xue hui, “The Assistive Input Devices with Intel ACAT System
for the Severe Disabled - Applied system innovation : proceedings of 4th IEEE International
Conference on Applied System Innovation 2018 (IEEE ICASI 2018) : Chiba, Japan, April
13-17, 2018,” 2018 IEEE Int. Conf. Appl. Syst. Invent., pp. 1015–1017, 2018.
[11] P. Mukherjee, S. Santra, S. Bhowmick, A. Paul, P. Chatterjee, and A. Deyasi, “Development
of GUI for text-to-speech recognition using natural language processing,” 2018 2nd Int.
Conf. Electron. Mater. Eng. Nano-Technology, IEMENTech 2018, pp. 1–4, 2018.
[12] A. Alsaif, N. Albadrani, A. Alamro, and R. Alsaif, “Towards intelligent Arabic text-to-
speech application for disabled people,” 2017 Int. Conf. Informatics, Heal. Technol. ICIHT
2017, pp. 0–5, 2017.
[13] J. Llisterri, “• El objetivo de la síntesis del habla es la producción ( generación ) artificial de
mensajes orales • La síntesis es una técnica complementaria del reconocimiento en la
comunicación persona - máquina,” pp. 1–8.
[14] A. Larios, “Reconocimiento y síntesis de voz,” pp. 1–9, 1999.
[15] P. D. Agüero, “Síntesis de voz aplicada a la traducción voz a voz,” TDX (Tesis Dr. en Xarxa),
2012.
[16] C. Manuel and M. Sánchez, “Modelado de la cualidad de la voz para la síntesis del habla
expresiva,” pp. 1–3.
[17] C. Ii and S. De Voz, “Capitulo II. Síntesis de Voz,” pp. 8–17, 1999.
[18] K. Palacio, J. Auquilla, and E. Calle, “Diseño e Implementación de un Sistema de Síntesis
de Voz,” Rev. Tecnológica ESPOL, vol. 21, no. 1, pp. 105–113, 2008.
52
[19] “Sintetizadores y Corpus de voz,” Corpus, pp. 13–25, 2002.
[20] J. Tusón, “Introducción al lenguaje,” no. June, 2003.
[21] Docs.python.org, “La biblioteca estándar de Python.” .
[22] N. Velasco, “Sistema embebido para la conexión de un PLC siemens S7-200 a la red GSM,”
pp. 34–69, 2005.
[23] N. M. Bhat, “pyttsx3 Documentation,” 2020.
[24] tesseract-ocr.github.io, “Tesseract-OCR.” [Online]. Available: https://tesseract-
ocr.github.io/tessdoc/#introduct.
[25] pypi.org, “Pytesseract.” [Online]. Available: https://pypi.org/project/pytesseract/.
[26] A. Pérez, “Tutorial Onshape,” 2016.
[27] P. Technical, “KY-023 Joystick module ( XY-Axis ),” pp. 98–103, 2017.
[28] J. C. Gómez, “Procesamiento Digital de Señales de Voz Diseño de Filtros Digitales,” pp. 1–
20, 2005.
[29] E. Superiores, M. C. Ciudad, and J. E. Brieva, “Sintesis de voz esofagica.”