Home
Reconocimiento de voz por redes neuronales
Contents
1. T T E E E EE T T e E ET t TT T T IT a s E a asss SSA respuesta deseada BRR k k k k k k k k k k k k k k k k k k x funci n exponencial para respuesta deseada if fich dat n fic entf 1 resp des 0 95 0 95 0 55 texp double 15 0 ta dimen array RCA if fich dat n fic entf 0 I resp des 1 0 95 0 95 0 55 exp double 15 0 ta dimen array p adaptamos capa de salida a d Eid uiii dd e ul eiii Qui uei a A A a eb nib Rai d ei bad uei edd A ead eb dad at el af eee adaptamos 26 capa intermedia id for i 1 i lt 5 it delta 2 i 0 delta 3 0 0 w 2 1 i 0 x_nod 2 i 0 1 x_nod 2 i 0 po e be e E E E E E E E E E E E E E E E E E E E E E E s re PA EE Adaptamos 1 capa y Gic cc IEEE a dA A ey ae en Es 8 0 for 11 1 11 lt 3 11 for 12 1 12 lt 10 12 for r 1 r lt 5 r 35 sum delta 2 r 0 w 1 r 11 12 S S sum delta 1 11 12 S x_nod 1 11 12 1 0 x_nod 1 11 12 20 IA Pi EE Calculamos los nuevos promediados w weights a RR RR RR RR
2. WR 4 6 4 11 x_nodR 4 6 11 X2 5 x3 2000 ham int 11 12 13 14 z int pant fich w argvl if pf fopen fich w r NULL return false fgets buffer2 20 pf if buffer2 0 V fclose pf getch return false colocamos los datos del fichero RNN for z 1 z 5 zt fgets buffer2 20 pf wR 2 1 z 0 atof buffer2 for 11 1 11 lt 5 11 for 12 1 12 lt 3 12 for 13 1 13 lt 10 13 fgets buffer2 20 pf wR 1 11 12 13 atof buffer2 z z 1 44 fclose pf ponemos los valores de 0 5 S for z 1 z lt 5 z x nodR 2 z 0 20 5 p tomamos los datos del fichero char f voz f voz argv2 if pf fopen f voz rb NULL getch fclose pf return false static float mayor C 0 long cont C 0 float valor while feof pf Calculamos el valor mayor del fichero fgets buffer1 20 pf valor atof bufferl cont C cont CH1 if fabs valor mayor C mayor C fabs valor fclose pf llmamos a la funci n hamming ham hamming 240 bucle para tomar 240 datos S fopen f voz rb long buc 0 Static float Sl1 6 float S2 0 0 sum static float datos1 240 datos2 240 Static float puntl punt2 fpos t desp desp fpos t 0 1 capa de salida s2 0 0 for z 1
3. cmdStop Stop 0 False 495 1800 1 Stop recording or playing 480 1215 Begin VB CommandButton cmdRecord 49 Caption Record Height 495 Left 360 TabIndex 0 ToolTipText Start recording immediate Top 480 Width 1215 End Begin VB Frame Frame5 Caption Control Audio Height 855 Left 240 TabIndex 5 Top 240 Width 4935 End Begin VB Timer Timer2 nterval 200 Left 200 Top 3480 End Begin VB Frame Frame4 Height 815 Left 240 TabIndex 3 Top 320 Width 4815 Begin VB Label StatisticsLabel BackColor amp H00000000 amp Caption wow ForeColor amp HOOO00FF00 amp Height 1455 Left 120 TabIndex 4 ToolTipText Information about the recording Top 240 Width 4575 End End Begin VB Frame Framel Caption Resultado Height 3375 Left 360 TabIndex 23 Top 4800 Width 4575 Begin VB Label lblNota Alignment 2 Center BeginProperty Font Name Arial Size 48 Charset 0 Weight 400 Underline 0 False Italic 0 False Strikethrough 0 False EndProperty ForeColor amp H000000FF amp Height 1575 Left 480 TabIndex 24 Top 960 Width 3495 End End Begin VB Label Label5 Caption Sol Height 255 Left 5280 TabIndex 15 Top 8520 Width 495 End Begin VB Label Label4 Caption Fa Height 255 Left 5280 50 TabIndex 14 Top 6840 Width 375 End Begin VB Label Label3 Caption Mg Height 255
4. Rate 6000 optRate6000 Value True End Sub Private Sub optMono Click Channels 1 optMono Value True End Sub Private Sub optStereo Click Channels 2 optStereo Value True End Sub Private Sub opt8bits Click Resolution 8 opt8bits Value True End Sub Private Sub optl bits Click Resolution 16 optl6bits Value True End Sub 63 RCXDatos bas Attribute VB Name modLego Programaci n de robots Lego MindStorms Visual Basic Modulo global 1 0 versi n Public Const SLOT 1 0 Public Const SLOT 2 1 Public Const SLOT 3 2 Public Const SLOT 4 3 Public Const SLOT 5 4 Nombres de tareas Modificar los nombres de tareas 1 9 por nombres m s significativos Para ello no es necesario que hagas las sustituciones aqu puedes hacerlo al principio del programa Const PRINCIPAL Const TAREA 1 1 Const TAREA 2 E 2 Const TAREA 3 3 Const TAREA 4 4 Const TAREA 5 5 Const TAREA 6 6 Const TAREA 7 7 Const TAREA 8 8 Const TAREA 9 9 Public Const CLICK SOUND O Public Const BEEP SOUND 1 Public Const SWEEP DOWN SOUND 2 Public Const SWEEP UP SOUND 3 Public Const ERRORE SOUND 4 Public Const SWEEP FAST SOUND ll a Public Const VAR 0 Public Const TEMPOR 1 Public Const CTE 2 Public Const MOTSTA 3 Public Const RAN 4 Public Const TACC 5 Public Const TACS 6 Public Const MOTCUR 7 Public Const KEYS 8 Public Const SENVAL 9
5. Sensores luz y colisi n Fig 2 2 5 Estructura del Robot El robot empleado es el siguiente CPU del Robot Motor 2 Sensor de luz Motor 1 dedo Comunicaciones infrarrojos Ordenador Micr fono Sensor de colisi n para nota tocada Fig 3 2 6 Algoritmo b sico del Robot El esquema b sico puede ser el siguiente Enviamos el programa compilado al RCX Ajuste de sensor de luz en funci n de la luz de la sala y del blanco de la tecla Sievento de nueva nota o Calculamos la posici n actual de nota o Buscamos c mo llegar a la nueva nota sensor de luz Puesta en marcha de motor 1 Contamos los pasos de tecla Si no detecta pasos de tecla en un tiempo T error Si hay paso de tecla el siguiente no puede estar a una distancia ni superior aXniinferior a Y Llegada a la nota deseada Stop motor 1 Pulsamos tecla motor 2 hasta activar sensor de presi n Levantamos dedo motor 2 sentido inverso un tiempo T Listos para recibir el nuevo evento de nota o O O O 3 An lisis y estudios previos a la implementaci n del proyecto 3 1 An lisis espectral de la voz La voz se analiza normalmente por medio de sus caracter sticas espectrales tales como el espectro de frecuencia o la funci n de autocorrelaci n en lugar de usar directamente la forma de onda Hay dos importantes razones para esto Una es que la se al de voz es reproducible sumando ondas sinusoidales y la amplitud y fase de estas ondas
6. actual salida de red x3 buc 80 x_nodR 3 0 0 46 realizamos el retardo Z 1 for z 1 z lt 5 z x nodR 1 1 z x_nodR 2 z 0 representamos la capa 2 buc buc 80 while lfeof pf fclose pf Guardamos los resultados en un fichero pf fopen argv3 wb for z 1 z lt buc 80 z fprintf pf i r n int x3 z 100 fclose pf return true 47 Proyecto Visual frmAudioRecorder frm Begin VB Form AudioReco BorderStyle Caption ClientHeight ClientLeft ClientTop ClientWidth Icon LinkTopic MaxButton ScaleHeight ScaleWidth StartUpPosition Begin VB CheckBox ch Caption Height Left TabIndex Top Width End Begin VB PictureBox BackColor Height Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End Begin VB PictureBox BackColor Height Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End Begin VB PictureBox BackColor Height Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End Begin VB PictureBox BackColor Height Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End Begin VB PictureBox BackColor Height Basic rder Fixed Single Doctorado UNED 0140 5325 9930 3035 frmAudioRecorder frx 0000 Forml 0 False 0140 3035 2 Ce
7. 0 15 delta 3 0 0 x nod 2 11 0 0 05 w inc 2 1 11 0 w 2 1 11 0 w 2 1 11 O tincrem w_inc 2 1 11 0 increm a Me EE E ei s EE EE EE E E Es OS e EE o us a NE me XE a CU S Ee A Z Calculamos el valor de salida E JE eege gene EE ES SES EES CS 36 s 0 0 for z 1 z lt 5 z sum x nod 2 z 0 w 2 1 z1 O S S sum x nod 3 0 0 21 0 1 0 exp double S actual salida de red JW oro riot totor roo ro tro See deis es Eva ie Retardo Z 1 de la capa 2 a entrada 1 El dx for z l z lt 5 z x nod 1 1 z x_nod2 z 1 Representamos la capa intermedia if kbhit 0 pant getch Opcitn de abandonar if pant 0x71 char ex jjoleseetji printf Desea abandonar el proceso S N if ex 0x73 fclose pf exit 0 fflush stdin pant 0 f Edge se Array para representar 2y DE EO E E ETE E E A E E EE E N ERE ee Pre EET il Ei QU TE AE E us qu ss LE QU ms RET ee xs ta 80 x_nod 3 0 0 resd ta 80 resp des A Eg O O ei LEE Error relativo EE EE E D error resp des x nod 3 0 01 sum error sum errorterror jif k kk kk FIN DEL BUCLE DE ADQUIRIR D
8. 06 02 Ventana Hanning 08 06 04 02 Ventana Hamming Fig 6 En la figura 6 hemos representado estas dos ventanas en el dominio del tiempo Implementaci n Para nuestro trabajo hemos empleado la ventana Hamming por los motivos expuestos anteriormente La implementaci n de la ventana est en el fichero HAMMING CPP La definici n de la funci n en C es la siguiente float hamming int N Esta funci n calcula la funci n ventana Hamming devolviendo la direcci n de un array de datos de dimensi n N Ejemplo float datos 240 dat ttf 240 ham His Ham hamming 240 For x 0 x lt 239 x dat ffi x datos x ham x ffis ffi dat fft 240 Calcula la FFT de datos con ventana Hamming de 240 la relaci n entre el periodo de muestreo T s el n mero de muestras a analizar N y la resoluci n en frecuencia Af se expresa como 1 Af Y TN Se esta formula deducimos que la resoluci n se incrementa proporcionalmente al intervalo de voz a analizar Por ejemplo en nuestro caso T 0 125ms 8kHz de muestreo N 240 muestras 30 ms de duraci n MAA 240 Cuando la ventana de an lisis aumenta la frecuencia de resoluci n aumenta puesto que el tiempo de resoluci n disminuye Adem s cuando la forma de onda es multiplicada por una ventana bien Hamming o Hanning la longitud del intervalo efectivo de an lisis disminuye aproximadamente en un 40 Por tanto el intervalo de an lisis
9. Left 5280 TabIndex 13 Top 5160 Width 375 End Begin VB Label Label2 Caption Re Height 255 Left 5280 TabIndex 12 Top 3480 Width 375 End Begin VB Label Labell Caption Do Height 255 Left 5280 TabIndex 11 Top 1800 Width 375 End Begin VB Menu frmFichero Caption Archivo Begin VB Menu frmSalir Caption Salir End End Begin VB Menu frmConfig Caption Configuraci n Begin VB Menu frmAudio Caption Audios End Begin VB Menu frmMenuLego Caption Lego End End Begin VB Menu mnuHerramientas Caption Herramientas Begin VB Menu mnuEntrenamiento Caption Entrenamiento End End Begin VB Menu mnuAyuda Caption Ayuda Begin VB Menu mnuAcercaDe Caption Acerca de End End End Attribute VB Name AudioRecorder Attribute VB GlobalNameSpace False Attribute VB Creatable False Attribute VB PredeclaredId True Attribute VB Exposed False DLL en C encargada de implementar la red y obtener la salida Private Declare Function ResultadoRNN Lib verific dll ByVal rnn As String ByVal DatosVoz As String ByVal Salida As String As Boolean Const AppName Doctorado UNED 2003 Private Sub cmdRecord Click Dim settings As String Dim Alignment As Integer Alignment Channels Resolution 8 settings set capture alignment amp CStr Alignment amp bitspersample amp CStr Resolution amp samplespersec amp CStr Rate amp channels a
10. Top 1260 Width 1095 End Begin VB OptionButton optRatel1025 Caption 11025 Height 315 Left 360 TabIndex 3 Top 960 Width 1095 End Begin VB OptionButton optRate22050 Caption 22050 Height 315 Left 360 TabIndex 2 Top 660 Width 1095 End Begin VB OptionButton optRate44100 Caption 44100 Height 315 Left 360 TabIndex 1 Top 360 Width 1095 End End End Attribute VB Name frmSettings Attribute VB GlobalNameSpace False Attribute VB Creatable False Attribute VB PredeclaredId True Attribute VB Exposed False Option Explicit Private Sub cmdOke Click Unload Me End Sub Private Sub Form Load Select Case Rate Case 44100 optRate44100 Value True Case 22050 optRate22050 Value True Case 11025 optRatell025 Value True Case 8000 optRate8000 Value True Case 6000 optRate6000 Value True End Select Select Case Channels Case 1 optMono Value Tru Case 2 e 62 optStereo Value True End Select Select Case Resolution Case 8 opt8bits Value True Case 16 optl6bits Value True End Select End Sub Private Sub optRate11025 Click Rate 11025 optRatell025 Value True End Sub Private Sub optRate44100 Click Rate 44100 optRate44100 Value True End Sub Private Sub optRate22050 Click Rate 22050 optRate22050 Value True End Sub Private Sub optRate8000 Click Rate 8000 optRate8000 Value True End Sub Private Sub optRate6000 Click
11. 0 Static float xs 200 static float resd 200 struct ficha char nombref 30 int entf float mayorf y struct ficha fich dat 200 int num fich r 0 0 S11 61 0 0 0 0 0 0 Fil 32 int cont float valor d ML EE Opci n de tipo de entrenamiento RU es E EARS s As us EE i GE GG GG Uns A m GG ES s GG s s GG As A E us ES ER Se S V en E eege char fdat fdat argvl if pfl fopen fdat r NULL printf El fichero s no se puede abrir fdat exit 0 char cadena 30 z 1 while feof pf1 fscanf pfl s fich dat z nombref fscanf pfl s cadena if fich dat z nombref break fich dat z entf atoi cadena if pf fopen fich dat z nombref rt NULL printf AnEl fichero Ss no se puede abrir fich dat z nombref fclose pf exit 0 fich dat z mayorf 0 while feof pf Calculamos el rango de altura de datos fgets buffer1 20 pf valor atof bufferl cont cont 1 if fabs double valor gt fich_dat z mayorf fich dat z mayorf fabs double valor fclose pf num_fich z z z 1 fclose pf1 O E aaa e gt Opcion de continuar o comenzar entrenamiento o XE Xa CS XE A ee XX XEN XEN CN ES XE ES ee See oe principio for 11 0 11 lt 3 11 on 12 0 12 lt 5 12 See 13 0 13 lt 3 13 A 14 0 14 lt 10 14 Ta 12 13 14 rand 3276
12. 10 par metros LPC de XI 3 4 Algoritmo back propagation El algoritmo back propagation es el empleado en el entrenamiento de las redes del tipo perceptr n multicapa de 3 o m s capas Si la red da una respuesta incorrecta se retropropaga el error y se corrigen los pesos de las conexiones para disminuir ese error La topolog a general de una red de estas caracter sticas es la representada en la figura 8 10 Capa de salida Capa oculta Fig 8 Las capas est n completamente interconectadas cada unidad de proceso est conectada a todas las unidades de la capa anterior y posterior aunque no conectadas a las de la misma capa En la figura 9 mostramos una unidad de proceso Fig 9 La unidad de proceso tiene asociados el valor de la suma de las entradas S un valor de salida aj y un valor de error j que se usa durante el ajuste de los pesos Forward propagation Este algoritmo comienza cuando un patr n se presenta a la entrada de la red Despu s de la activaci n de la primera capa se produce una propagaci n al resto de ellas hasta determinar el valor de salida Los valores de salida llegan a la unidad j y son sumadas mediante la siguiente formula gt GW i a 7nivel de activaci n de la unidad i w peso desde la unidad i hasta la unidad j donde 11 Despu s de calcular la suma sta pasa a trav s de la funci n sigmoide La principal ventaja de esta funci n es que es derivable
13. 10 polos es una buena aproximaci n de la envolvente de la FFT y una reducci n considerable en el n mero de par metros y por tanto en el n mero de nodos de nuestra red 2 3 ANN a implementar Bas ndonos en los trabajos previos de David P Morgan y C L Scofield Morgan 91 vamos a implementar una red multicapa realimentada con la siguiente estructura Fig l Vamos a incluir par metros LPC en la capa de entrada en lugar de un array de filtros resonantes fijos a una determinada frecuencia En nuestro caso tendremos 5 redes entrenadas una para cada palabra La salida mas probable siempre superando un umbral gana La implementaci n de la red ser en C creando unas dll como librer as de funciones que puedan ser importadas en un programa con una interfaz mas sencilla de programar como Visual Basic De esta manera intentamos obtener la rapidez del C para el procesado de se al y la facilidad de programaci n de Visual Basic para el entorno del programa 2 4 Entrada al robot Para la parte de rob tica vamos a emplear el kit de Lego RIS 1 5 Bagnan 02 empleando las comunicaciones infrarrojas que soporta intercambiando informaci n por medio del lenguaje VisualBasic 6 0 de Microsoft a trav s del ocx proporcionado por Lego Dentro del RCX introduciremos un programa que detecte tanto el valor de los sensores como los valores de los par metros de salida proporcionados por la red Red Neuronal Actuadores 2 Motores
14. 4 Text2 Text fa Case 5 Text2 Text sol End Select End Sub Private Sub ProgramaRCX Click With PBrickCtrl SelectPrgm txtPrograma Text BeginOfTask PRINCIPAL Index 1 PBrickCtrl Poll VAR 1 1 PBrickCtrl Poll VAR seleccionamos el programa comienza la tarea principal en la variable 2 el valor 2 en la variable 1 el valor actual en la 59 Configuramos los sensores y motores SetSensorType SENSOR 1 TIPO SWITCH SetSensorType SENSOR 3 TIPO LUZ SetSensorMode SENSOR 3 PORCENT MODO O0 SetPower MOTOR A 4 MOTOR C CTE 6 VWokckck ck ck ck ck ck ck k ck ck k kk kk k kk A DAS Bucle principal infinito Vokckck k ck ck k ck k k k k k ck k k k k k k k k XX Loop CTE 0 Wok ck ck ck S sk kk Sk kk Sk RR Sk sk Sk Sk S S Sk S Sk Sk RR RR RR RR RR RR RR RR KK kx kx Sk kx kx Sk E La variable 3 rige el comportamiento del robot Los valores posibles son TOO robot parado O robot toca nota vi robot adelanta 1 nota 12 robot adelanta 2 notas tel robot retrasa 1 nota tie robot retrasa 1 nota Wok ck ck k k k kk k k k k k k k k k k k k k k k k k k k k k k k K k k K k k K k k K k k k k k k k k ok Wok ck ck ck kk kk kk kk Sk Sk kk Sk Sk Sk ke kk kk kk kk kk ke kk ke RR RR RR RR RR RR RR ko ko ko ko ko k kc k kk kk Movimiento del robot para situarse en la nota correspondiente Vock ck ck ck ck k k k k k k k k k ck ck k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k
15. EndIf EndLoop EndOfTask End With End Sub 60 frmSettings frm VERSION 5 00 Begin VB Form frmSettings Hz Caption Configuraci n ClientHeight 2325 ClientLeft 5355 ClientTop 4755 ClientWidth 5775 Icon frmSettings frx 0000 LinkTopic Tcl MinButton 0 False ScaleHeight 2325 ScaleWidth 5775 Begin VB CommandButton cmdOke Caption Ok Height 375 Left 2040 TabIndex 2 Top 680 Width 575 End Begin VB Frame Frame3 Caption Resolution Height 095 Left 3960 TabIndex 9 Top 20 Width 575 Begin VB OptionButton opt8bits Caption B bits Height 255 Left 360 TabIndex 11 Top 360 Width 855 End Begin VB OptionButton optl6bits Caption 16 bits Height 255 Left 360 TabIndex 10 Top 720 Width 855 End End Begin VB Frame Frame2 Caption Canales Height 1095 Left 2040 TabIndex 6 Top 120 Width 1575 Begin VB OptionButton optMono Caption mono Height 255 Left 360 TabIndex 8 Top 720 Width 855 End Begin VB OptionButton optStereo Caption stereo Height 255 Left 360 TabIndex Ki Top 360 Width 855 End End Begin VB Frame Framel Caption Frec muestreo Height 2055 Left 120 TabIndex 0 Top 120 61 Width 1575 Begin VB OptionButton optRate6000 Caption 6000 Height 315 Left 360 TabIndex 5 Top 1560 Width 1095 End Begin VB OptionButton optRate8000 Caption 8000 Height 315 Left 360 TabIndex 4
16. Public Const SENTIPO 10 Public Const SENMODO 11 Public Const SENRAW 12 Public Const BOOL 13 Public Const RELOJ 14 Public Const PBMESS 15 Public Const SENSOR 1 0 Public Const SENSOR 2 1 Public Const SENSOR 3 2 Public Const TEMPOR 1 0 Public Const TEMPOR 2 1 Public Const TEMPOR 3 2 Public Const TEMPOR 4 3 Nombres de tac metro s lo CyberMaster Public Const TACHO IZQ 0 Public Const TACHO DCHO 1 Public Const ALCANCE CORTO O Public Const ALCANCE LARGO 1 Public Const NO TIPO 0 Public Const TIPO SWITCH Public Const TIPO TEMP Public Const TIPO LUZ 3 Public Const TIPO ANGULO 4 N Il Public Const RAW MODO O Public Const BOOL MODO 1 Public Const TRANS CONT MODO 2 Public Const PERIOD CONT MODO 3 Public Const PORCENT MODO 4 Public Const CELSIUS MODO 5 Public Const FAHRENHEIT MODO 6 Public Const ANGULO MODO 7 Nombres de motor cadenas Public Const MOTOR A Public Const MOTOR B 1 Public Const MOTOR C 2 Public Const SALIDA A 0 Public Const SALIDA B Public Const SALIDA C 2 Public Const MAYQ O Mayor que Public Const MENQ 1 Menor que Public Const IG 2 Igual Public Const DIF 3 No igual a Miscellaneous Public Const MS 10 1 10 ms Public Const MS 20 2 MS 10 20 ms Public Const MS 30 3 MS 10 30 ms Public Const MS 40 4 MS 10 40 ms Public Const MS 50 5 MS 10
17. TabIndex 10 Top 1440 Width 615 End Begin VB CommandButton Nota Caption sol Height 375 Index 4 Left 2640 TabIndex 8 Top 240 Width 495 End Begin VB CommandButton Nota Caption ER Height 375 Index 2 Left 2040 TabIndex 7 Top 240 Width 495 End Begin VB CommandButton Nota Caption nman Height 375 Index 2 Left 1440 TabIndex 6 Top 240 Width 495 End Begin VB CommandButton Nota Caption re Height 375 Index 1 Left 840 TabIndex 5 Top 240 Width 495 End Begin VB TextBox Textl Height 285 Left 1560 spirit ocx 57 End Begin VB CommandButton End TabIndex Top Width Caption Height Left TabIndex Top Width 4 1050 615 PoolVariables Obtener datos 815 1320 3 1920 1455 Begin VB CommandButton Nota End Begin VB CommandButton End Begin SPIRITLib Spirit End Beg End Beg End Beg End Caption Height Index Left TabIndex Top Width Caption Height Left TabIndex Top Width Height Left TabIndex Top Visible Width Version _ExtentX _ExtentY StockProps in VB Frame Caption Height Left TabIndex Top Width in VB Label Caption Height Left TabIndex Top Width in VB Label Caption Height Left TabIndex Top Width Framel Label4 Labell Begin VB Line Line3 End x X2 Y Y2 Begin VB Line Line2 End X X2 Y Y2 do 375 0 240 2 240 49
18. Tramas temporales Fig 13 19 La entrada a la red est formada por dos vectores con datos consecutivos y una realimentaci n de la capa oculta La ventaja de este tipo de entradas es que la red es capaz directamente de codificar diferencias en las caracter sticas de las dos tramas consecutivas de vectores Una red que procesara nicamente un vector cada vez requerir a nodos de contexto adicionales para almacenar la informaci n pasada y tendr a una representaci n interna mas compleja Morgan y Scofield Morgan 91 investigaron el n mero ptimo de nodos en la capa oculta para redes con la estructura aqu presentada Sus investigaciones revelan que para palabras como westchester los resultados no mejoran con una capa oculta de mas de cinco nodos Esto nos llev a implementar este dato como ptimo en la capa oculta de nuestra red Implementaci n software La red de reconocimiento fue implementada en lenguaje C empleando el compilador Visual C 6 0 de Microsoft para generar dos ficheros dll que son entrenam dll y verific dll redes de entrenamiento y verificaci n Los motivos de emplear C a pesar de su complicaci n son evidentes Rapidez En este lenguaje podemos manejar un gran n mero de datos con velocidades realmente altas El sistema de entrenamiento es principalmente iterativo bucles por lo cual implementar la red de entrenamiento en un programa matem tico matlab mathematica o en un lenguaje de programaci
19. VERSION 5 00 Begin VB Form frmEntren Caption ClientHeight ClientLeft ClientTop ClientWidth Icon LinkTopic ScaleHeight ScaleWidth Begin VB TextBox txt Height Left TabIndex Text Top Width End Begin VB TextBox txt Alignment Height Left TabIndex Text Top Width End amiento Entrenamiento 3165 4695 3615 5880 frmEntrenamiento frx 0000 Formi 3165 5880 Salida 315 3240 rnn do rnn 200 935 Iteraciones Right Justify 285 440 2 100 2520 495 Begin VB TextBox txtEntrada Height Left TabIndex Text Top Width End Begin VB CommandButt Caption Height Left TabIndex Top Width End Begin VB Frame Frame Caption Height Left ni TabIndex Top Width 375 3240 0 dos EXC 600 935 on btnAceptar Aceptar 495 4200 4 2400 455 1 Ficheros de datos 2055 120 5 120 5655 Begin VB Label Labell Caption Height Left TabIndex Top Width End Begin VB Label Label4 Caption Height Left TabIndex Top Width End End Begin VB Label Label Caption Height Left TabIndex Top Fichero de salida con la red entrenada 495 360 7 1080 E 2295 Fichero de entrada con los datos de los ficheros de voz 495 360 6 360 2415 Iteraciones 375 360 3 2520 55 Width 1095 End End Attribute VB Name frmEntrenamiento Attrib
20. audio al que podemos acceder bien mediante el bot n Editar bien mediante el men Archivo Editar De esta manera podemos segmentar c modamente las palabras para ser entrenadas por el sistema Al pulsar Guardar selecci n almacenamos en dos ficheros wav dat la selecci n de la onda en el path indicado en la caja de texto inferior es decir si en la figura 18 pulsamos Guardar selecci n la selecci n del fichero de onda se guardar en notas do dat como fichero asii y en notas do wav como fichero de sonido 23 Waveform View voz waw I D x Fichero voz wav ltima modificaci n 22 07 2003 15 01 11 Size 32044 Bytes Bbis Mona Em 32000 SEIS Zoom Longitud 4 segundos Selecci n Cancelar Total Re Play Pausa Stop Play Loop Muestras selecc 3634 7004 3311 staurar es Pause so Pte Lon 0462 087 0414 Bees uardar selecci n notas do Fig 18 Una vez entrenada la red podemos probar el sistema para ello si pulsamos Record el programa grabar los datos de la entrada predeterminada de la tarjeta de sonido almacen ndolos en un doble formato voz wav fichero de audio voz dat fichero de audio con los datos en ascii Una vez grabado el fichero el sistema autom ticamente lo pasa a trav s de las 5 redes entrenadas y se visualiza el resultado En la figura 18 se muestra el resultado obtenido al grabar do en el micr fono En la primera de
21. cambia lentamente La otra la forma de percibir la se al de voz por el oido humano dando principal importancia al contenido espectral y no a su fase La densidad de potencia espectral puede ser considerado como el producto de dos elementos la envolvente espectral que cambia lentamente como una funci n de la frecuencia y la estructura espectral fina que cambia r pidamente La estructura espectral fina produce patrones peri dicos para sonidos sonoros pero no para sonidos sordos Na ar la AMARA PEHAR E e in EE DR or lI WEM WERT A TY Fig 4 La figura 4 muestra la s laba Re en tiempo muestreada a 8kHz El n mero de muestras es de 2800 En la figura 5 esa misma se al est pasada al dominio de la frecuencia 0 4000Hz Puede observarse un contenido espectral fino extra do por medio de la FFT y una envolvente que var a lentamente LPC En este caso hemos empleado 10 polos para la envolvente del algoritmo LPC fig 5 El algoritmo para la transformada de Fourier ha sido el siguiente N4 S w diy ne n 0 donde w 21 T f frecuencia real N n mero de muestras Implementaci n La implementaci n del algoritmo en C est en el fichero FFT CPP La definici n de la funci n en C es la siguiente float fft float X int N donde X representa un puntero a un array de datos X de dimensi n N Un ejemplo de uso ser a float ffts Mis ffiQX 240 3 2 Funci n Ventana Con el fin de extraer p
22. e e iv Funcion de ventana Hamming i aaa a a aoa wn EE e EE e a ee include stdafx h include lt math h gt float hamming int N static float h 241 int n for n 0 n lt N 1 n h n 0 54 0 46 cos double 2 0 3 1416 float n float N 1 J return h 43 Verific dll Verific2003 cpp JR RR RR kk kk RR RR EE RR kkk kk ck ck ck ck ck kk kkk kk kk kkk ck ck ck ck ck k k K kkk Ck Ck ck kkk ck k ck kk ke ke ke ke ke ke ek jp RAROS Implementaci n de una red recurrente de 3 capas e rr A a i eS a EE EE i A a me TU ey GE eem E EIE ER E QE EE EE C E E c sen uu E qe Eu EVE E EU ES uu uus Es de CS uu ES eu as E C Es E EE Cu E E ES E E ER EE Ee Fichero main RED ANSI CPP Bl Funciones a llamar LPCCEP CPP HAMMING CPP fi LPC CPP Z J E E K k k k k k k k k k Kk Kk K k k K k K K K K K KOK K KOK K KO KOK K KOK K KOK K KOK K KO KOK K KOR K KO KOK k KOK K KOR K KOR K OR R OR R ke kk include stdafx h include lt stdio h gt include lt stdlib h gt include lt math h gt include lt conio h gt float lpc float X int polos float hamming int N bool stdcall ResultadoRNN char argvl char argv2 char argv3 bool stdcall ResultadoRNN char argvl char argv2 char argv3 definimos variables FILE pf char fich w char buffer2 20 buffer1 20 static static static static float float float float
23. en rob tica 2 Resumen del trabajo El trabajo consiste en fabricar un robot que distinga entre 5 palabras monos labas correspondientes a 5 notas musicales do re mi fa sol y sea capaz de tocarlas en el teclado de un piano est ndar Paso a indicar el esquema por medio de un gr fico Bloque 1 Redes 1 Toma de muestras de voz 2 Procesado de voz para 3 Paso por una o varias redes Frec de muestreo 8Khz extraer par metros neuronales realimentadas fundamentales FFT LPC que funcionan como de 5 a 10 polos clasificador de entrada Bloque 2 Rob tica 4 Salida de la Red 5 Evaluaci n de la posici n 6 Puesta en marcha del Neuronal Entrada al Robot actual y como llegar a la programa del robot para posici n objetivo sensor de realizar la tarea necesaria luz y de colisi n Como podemos observar nos enfrentamos a una serie de problemas multidisciplinares que implican aspectos de Informatica programaci n C Vbasic Tratamiento de sefial Fon tica ac stica Redes neuronales algoritmo back propagation Mec nica Rob tica A continuaci n explicamos brevemente cada uno de los bloques anteriores 2 1 Muestreo y Conversi n A D Las se ales de voz son convertidas en se ales el ctricas por medio de un micr fono que posteriormente ser n transformadas de anal gico a digital Para la palabra el rango de frecuencias donde se encuentra la mayor parte d
24. k k k k k kv If VAR 3 DIF CTE 100 si var 3 no es 100 If VAR 3 MENQ CTE O si variable 3 es menor que 0 SetRwd MOTOR C motor atr s EndIf If VAR 3 MAYQ CTE O si variable 3 es mayor que 0 SetFwd MOTOR C motor adelante EndIf On MOTOR C motor C on AbsVar 3 VAR 3 quitamos signo a la variable 3 Loop VAR 3 loop en funci n de var 3 Wait 2 20 esperamos 200ms en ese tiempo no puede haber 2 pasos de nota While SENVAL SENSOR 3 MAYO CTE txtSensorLuz Text No hacemos nada mientras que el sensor EndWhile de luz sea mayor que el umbral EndLoop SetVar 3 CTE O Mandamos al robot a tocar nota poniendo var 3 igual a 0 EndIf Wok ck ck ck ck kk Sk Sk sk Se S Sk ke e ke sk Sk S S S Sk Sk Sk Sk Sk Sk Sk Sk S S Sk Sk S k RR RR RR RR RR RR RR Sk sk kx kx kx kx Sk kx S kx x Movimiento del brazo del robot para tocar nota Vock ck ck ck ck ck ck kc kc ck ck ck ck ck ck kk ck ck RR RR RR RR RR ck ck ck ck cock kk ck ck ck ck ok ck ck ck ck ko ck ko ko kv ko KKK If VAR 3 IG CTE O si var 3 es O Off MOTOR C paramos el motor de movimiento SetFwd MOTOR A On MOTOR A encendemos el motor del brazo While SENVAL SENSOR 1 IG CTE 0 mientras no toquemos el sensor de colision EndWhile SetRwd MOTOR A cambiamos el sentido de giro del motor Wait CTE 50 dejamos medio segundo que suba el brazo Off MOTOR A paramos el motor del brazo SetVar 3 CTE 100 variable 3 lista para recibir nueva nota
25. principales problemas fue el limitado n mero de sensores y actuadores incluidos en el kit Como solamente disponemos de dos motores empleamos uno para el movimiento del robot y otro para el brazo encargado de tocar la nota El sensor de luz de bastante poca calidad lo empleamos para distinguir los pasos de nota y el sensor de contacto para determinar cuando el dedo del robot ha finalizado de tocar la nota El esquema es el siguiente Sensor de contacto Motor posici n Fig 12 La programaci n del robot y las pruebas de funcionamiento se encuentran en el formulario frmLego y el m dulo modLego del proyecto UNED VB 2003 El formulario frmLego est dividido en cuatro partes La parte superior sirve para mandar informaci n de nota al robot Esto nos permite comprobar de forma manual que realmante el robot funciona correctamente independientemente de la parte de reconocimiento de voz La segunda parte nos informa de la nota en la que se encuentra y de la nota anterior Como veremos posteriormente el algoritmo para encontrar la nueva nota es bastante simple basta con restar la posici n objetivo de la posici n actual y encontrar los pasos de nota correspondientes La tercera parte nos permite calibrar el sensor de luz ste es bastante sensible a los cambios de luminosidad de la habitaci n Valores ptimos se encuentran entre 42 habitaci n poco iluminada y 50 habitaci n bastante iluminada Este valor indicar el umbral que de
26. recogemos 2 matrices de datos para llevarlos a lpc y obtener 2 tramas X1 ca data_bin catta fich_dat n_fic mayorf ham ca 1 0 de par metros X2 ca data binlcatta480 fich dat n fic mayorf ham ca 1 0 A E E E FE E E E E FE E E E E FE E E E E FE E E E E FE E E E E FE E E E E FE E E E E FE E E E E FE E E E E be E s pl MELLE llamamos a la funci n lpo mamanman 9 puntl 1pc X1 10 34 punt2 1pc X2 10 colocamos los correspondientes valores lpc en sus correspondientes tramas for 13 1 13 lt 10 13 x nod 1 2 13 punt1 13 x nod 1 3 13 punt2 13 jik eege jie ee ere nios Comenzamos el c lculo KA for 11 6 11 lt 10 11 nodos vacios x nod 1 1 11 20 0 s 0 0 for z 21 z 5 z sum x nod 2 z 0 w 2 1 z 0 S St sum x nod 3 0 0 1 0 1 0 exp double S actual salida de red ee E e mn ET Sit Sl Se Sm Se ET Sat am SL am AS E St ES Se me me EN Sup mama AI Sa i Sel E Si E Ai au Sa So ALS St Se aza Sui A em Gae Se Sil ea lS AW EE Se ER Sl CR e Gw am ama comenzamos a adaptar los pesos de las capas adapt weights
27. red recurrente RNN formada por 20 c lulas de entrada 5 c lulas ocultas y una c lula de salida 20 x 5 x 1 La activaci n de las 5 c lulas ocultas pasa a trav s de una unidad de retardo z y se almacena en nodos de contexto Debido a que la salida de los nodos de contexto est conectada a la entrada de cada c lula en la capa oculta stos sirven como memoria de las activaciones de la capa oculta La estructura se representa en la figura 13 La salida de la red produce una salida en funci n del tiempo a medida que los nodos de entrada avanzan a trav s de los par metros que representan la voz La RNN se entrana usando el algoritmo back propagation Para cada palabra clave se representa una respuesta deseada a la salida de la red en el rango 0 1 Los nodos de la capa oculta x t 0 se inicializan con un valor de 0 5 La relaci n de aprendizaje fue un valor peque o 7 0 15 para evitar oscilaciones Con estos datos y con tres muestras de voz por nota 3 x 5 do sol 15 realizamos 250 iteraciones El sistema se entren con tres funciones objetivo La que dio mejores resultados fue la exponencial 18 16 14 as 06 04 02 y t y m Funci n escal n y t 6 b 6 y T Funci n rampa x t k 0 ye Funci n exponencial con los valores y 0 95 9 20 55 Si los datos de entrada son de rechazo stos se entrenan con 1 y t 18 Par metros LPC
28. y nos permitir retropropagar el error en capas ocultas como veremos posteriormente Su formula es fe He Backward Propagation Cada unidad de proceso en la capa de salida proporciona un nico n mero real que es comparado con la salida deseada Basados en esta diferencia calculamos un valor de error para cada unidad en la capa de salida Con estos valores de error podemos calcular el resto de valores que ajusten los pesos de la red El error se denota por la variable 6 y para la capa de salida se calcula de la siguiente manera t TA f S donde tj valor deseado u objetivo target aj valor de salida de la unidad j f x derivada de la funci n sigmoide Sj suma de los pesos de las entradas a la unidad j La cantidad t a refleja la cantidad de error El t rmino f hace que el factor de correcci n sea mayor o menor dependiendo del punto de la curva en el que nos encontremos Si f x es la funci n sigmoide se puede demostrar que f x f Qa f lo cual facilita notablemente los c lculos Para calcular el error en una capa oculta empleamos la siguiente expresi n w f S Para ajustar los pesos de las conexiones empleamos los valores de obtenidos Este ajuste se realiza teniendo en cuenta la expresi n siguiente Aw 1O a La variable n en la ecuaci n de ajuste de pesos es la relaci n de aprendizaje Su valor normalmente entre 0 25 y 0 75 se escoge por el usuario Valores muy gra
29. 5 ProgramaRCX Programa al RCX 615 360 1 3840 2415 PBrickCtrl 495 2880 0 3960 0 False 495 65536 873 873 0 Notas 125 120 12 0 3135 Programa 255 360 16 3360 975 Sensor Luz 215 360 13 2640 1095 3120 3120 3480 2400 2400 58 Begin VB Line Linel XI 0 x2 3480 Xd 840 Y2 840 End Begin VB Label Label3 Caption Nota Anterior Height 375 Left 360 TabIndex 11 Top 1440 Width 1095 End Begin VB Label Label2 Caption Nota Actual Height 255 Left 360 TabIndex 9 Top 1080 Width 1095 End End Attribute VB Name frmLego Attribute VB GlobalNameSpace False Attribute VB Creatable False Attribute VB PredeclaredId True Attribute VB Exposed False Option explicit Private Sub Form Load PBrickCtrl InitComm End Sub Public Sub Nota Click Index As Integer PBrickCtrl Poll VAR 1 PBrickCtrl SetVar 2 CTE anterior PBrickCtrl SetVar 1 CTE 1 PBrickCtrl SetVar 3 CTE variable el valor actual End Sub Private Sub PoolVariables Click ValorActual PBrickCtrl Poll VAR 1 ValorAnterior PBrickCtrl Poll VAR 2 Select Case ValorActual Case 1 Textl Text do Case 2 Textl Text re Case 3 Textl Text mi Case 4 Textl Text fa Case 5 Textl Text sol End Select Select Case ValorAnterior Case 1 Text2 Text do Case 2 Text2 Text re Case 3 Text2 Text mi Case
30. 50 ms Public Const MS 60 6 MS 10 60 ms Public Const MS 70 7 MS 10 70 ms Public Const MS 80 8 MS 10 80 ms Public Const MS 90 9 MS 10 90 ms Public Const MS 100 10 MS 10 100 ms Public Const MS 200 20 MS 10 200 ms Public Const MS 300 30 MS 10 300 ms Public Const MS 400 40 MS 10 400 ms Public Const MS 500 50 MS 10 500 ms Public Const MS 700 70 MS 10 700 ms Public Const SEG 100 MS 10 Public Const SEG 2 2 SEG 1 Public Const SEG 3 3 SEG 1 Public Const SEG 5 5 SEG 1 Public Const SEG 10 10 SEG 1 Public Const SEG 15 15 SEG 1 Public Const SEG 20 20 SEG 1 Public Const SEG 30 30 SEG 1 Public Const MIN 1 60 SEG 1 000000000 E B
31. 7 0 0 5 2 0 33 for 11 1 11 lt 5 11 x nod 2 11 0 0 5 jE PA AA N mero de iteraciones my D A E a YSLXSA C TA OS I SASIIIIAI II I II IIAMIAINIAIWIYN a a a ee int iter printf in N mero de repeticiones para la convergencia iter argv2 Nombre del fichero de salida FILE ptabla char fichero printf n Introduzca el nombre del fichero rnn salida fichero argv3 for conv 1 conv lt iter conv SS A OCC COCO OCC un GG Es EE E s GG EE E EE it lil EE llamamds d la FUNCI N datos 25 2 5 EJ EX for n fic 1 n fic num fich n fic H data bin imp dat ascii fich dat n fic nombref dimen array data bin 9999 n mero de datos ham hamming 240 jrkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkikkkkkkkkkkikkkkkkkkkkikkkkkkkkkkiakx Ee 2 BUCLE PRINCIPAL EE JR RR RR RR kkk kk kk RR RR ck ck ck kc k kk kkk kk kkk k ck k ck kckck k K kkk Ck Ck Ck ck ck kkk kkk ke ke ke ke ke ke ke amp for ta 0 ta lt dimen array 320 ta 80 llamamos a todos los datos del array extern void clrscr printf Iteraci n d nfichero d s nmuestra d conv n fic fich dat n fic nombref ta Y for ca 0 ca lt 239 ca
32. ATOS KKKKKKKKKKKKKKK free data bin sum error 0 un eh ci fa EE EN a i EEN uni EN EE is E EE E EN EE EE i en E EE en ui i e em i i iy si E EE i EE e almacenamos los valores de w en un array JF aerea ooo ooo Pf for z 1 z lt 5 z t w sal z w 2 1 z1 0 for 11 1 11 lt 5 11 for 12 1 12 lt 3 12 37 for 13 1 13 lt 10 13 w sal z w 1 11 12 13 z z l T AA A SES almacenamos los datos de w en un fichero xy Vs Es AES EE as n Eo avis qe s E s E EOE0 ev EE C oO OE ev i E E Qs E E RS RR RS SoC E E dur S Vr S av s Gu S gl ptabla fopen fichero wb fprintf ptabla V for z 1 z lt 155 z fprintf ptabla An f w sal z fclose ptabla Ui ia E o Om hero de po oin Ao an ado eet ee eee ee ee ees jie AE Reinicializamos los x nod de entrada del retardo x PE jis for z 1 z lt 5 z x_nod 2 z 0 0 5 d increm 0 k k k k k k k k KKK
33. KKK FIN BUCLE DE CONVERGENCIA k k k k k k k k k k x return true DAT ASC cpp C Funci n que pasa datos ascii a binario con un m ximo de 10000 datos a ES include stdafx h include lt stdio h gt include lt stdlib h gt include lt conio h gt float imp dat ascii char nombre 30 char buffer 20 float datos bin int t 0 datos bin float calloc 10000 sizeof float FILE pf if pf fopen nombre r NULL printf El fichero s no se puede abrir nombre exit 1 t 0 while fgets buffer 20 pf l NULL if t lt 10000 datos bin t atof buffer conversion de ascii a binario if t gt 10000 printf Fichero con demasiados datos fclose pf exit 0 tik datos bin 9999 t fclose pf 5 t numero de muestras del fichero ascii datos bin fichero ascii de un m ximo de 10000 muestras return datos bin 39 include stdafx h include lt math h gt include lt stdlib h gt include stdio h include lt conio h gt include complex float fft float x int N variables complex c complex a2 int Ji float a complex sum complex S 0 0 float c sal c sal float calloc N
34. RR RR RR EE RR RR RR RR RR RR RE EE RR RE RR RR RR RR RR RR RE RR RR RR RR RR RR RR A A Fe he he he fx e e ee e KK w capa 1 fx e ee e KK for 11 1 11 lt 5 11 for 12 1 12 lt 3 12 for 13 1 13 lt 10 13 increm 0 15 delta 2 11 0 x_nod 1 12 13 0 05 w_inc 1 11 12 13 w 1 11 12 13 w 1 11 12 13 increm w_inc 1 11 12 13 increm nen E Es ao E suns s n GE GG Es e E E E Cs E n Ey EAE Eu EE EE EE i Er Ey us AES EE ao GG E AS n s Ee DE PR Guardamos los antiguos x nod de ld capa 2 Ty for z l z 5 z x nod2 z 1 x_nod 2 z 0 SE SEO GG GES SS GG NS GG SG SG cie rA O NS GG NUNS GG SG GS GG EG Ts XS a Na NS Ga ds vais e iere Calculamos los nuevos x nod de capa 2 Ed ree for z 0 z 5 z Borramos variable aux S11 z 20 0 for z 1 z lt 5 z capa intermedia for 11 1 11 lt 3 11 for 12 1 12 lt 10 12 sum x_nod 1 11 12 w 1 z 11 12 s11 z 511 z sum x nod 2 z 0 1 0 1 0 exp double S11 z tomando B 1 SA EE Ve a GG GG AES s GG GG GG us e o GG GG GG GG GG GG GE GG a eee a erem Calculamos los nuevos w de capa 2 e e 9c ccc A A A eiu inr ru erus rere NN GON CS rusas ii deb s Gab aS quf eb a ed ud ak for 11 1 11 lt 5 11 increm
35. Ra Ma 1995 Hush 92 Don R Hush y Bill Horne An overview of neural networks Inform tica y Autom tica Vol 25 1992 Jackson 89 Leland B Jackson Digital Filters and Signal Processing Kluwer Academic Publishers 1998 Latombe 91 J C Latombe Robot Motion Planning Kluwer Academic Publisheres 1991 Lippmann 87 Richard P Lippmann An Introduction to Computing with Neural Nets IEEE ASSP Magazine April 1987 Microsoft 01 Microsoft Visual Basic 6 0 Microsoft Press 2001 Morgan 91 D P Morgan C L Scofield Neural Networks and Speech Processing Kluwer Academic Publishers 1991 Recuero 83 Manuel Recuero L pez Ac stica EUITT 1983 Shannon 48 C E Shannon A mathematical theory of communication Bell System technical Journal vol27 1948 Shaughnessy 90 Douglas O Shaughnessy Speech Communication Human and Machine Addison Wesley Publishing Company 1990 Watrous 87 R L Watrous and L Shastri Learning phonetic features using connectionist networks An experiment in speech recognition IEEE First Int Conf on Neural networks San Diego junio 89 vol IV 31 9 C digo Fuente entrenam dll Entrenam2003 cpp E A rcc Metodo de entrenamiento de una red recurrente de 3 capas ki dE SE SS version ANST eebe DES A A M Fichero main ENT ANSI CPP R Funciones a llamar HAMMING CPP 7 qe LPC CPP 7 fo DAT ASC CPP SCH J E E K k k k k k k k kk C
36. Reconocimiento de voz por redes neuronales aplicado a un robot LEGO Trabajo conjunto de los cursos de doctorado de Redes neuronales Rob tica Aut noma UNED 2003 V ctor Padilla Mart n Caro vpadilla inicia es Tfno 918935277 Asignaturas Doctorado 2002 2003 Redes Neuronales Rob tica Autonoma 1 Introducci n Uno de los retos mas complejos y apasionantes al que nos podemos enfrenta en el mundo cient fico es sin duda el de intentar imitar el comportamiento del ser humano por medio de aparatos y sistemas avanzados En este sentido resulta complicado conseguir m quinas que caminen con naturalidad que posean articulaciones semejantes a nuestras manos que sean capaces de entender el habla etc En el presente trabajo nos hemos planteado un doble objetivo Por un lado adentrarnos en el mundo de las redes neuronales para crear un sistema que sea capaz de reconocer o al menos discriminar con una fiabilidad aceptablemente alta entre una serie de palabras o s labas pertenecientes a notas musicales Por el otro la creaci n de un robot que se comunique en tiempo real con el ordenador y sea capaz de ejecutar las rdenes provenientes de ste actuadores teniendo en cuenta el entorno y la posici n en la que se encuentra sensores El presente trabajo pretende ser un estudio introductorio a un trabajo mas profundo posible tesis doctoral sobre reconocimiento de voz en redes neuronales y sus posibles aplicaciones pr cticas
37. Sub frmAudio Click Dim strWhat As String cmdRecord Enabled True cmdStop Enabled False cmdPlay Enabled False frmSettings Show vbModal End Sub Private frmLego End Sub Private End End Sub Private End Sub Private End Sub Private Dim Dim Sub frmMenuLego Click Show vbModal Sub frmSalir Click Sub mnuAcercaDe Click frmAbout Show vbModal Sub mnuEntrenamiento Click frmEntrenamiento Show vbModal Sub Timer2 Timer RecordingTimes As String msg As String RecordingTimes Start time amp Stop time WaveStatistics amp WaveRecordingStartTime amp vbCrLf _ amp WaveRecordingStopTime StatisticsLabel Caption WaveStatisticsMsg WaveStatus If WaveStatusMsg AudioRecorder Caption Then AudioRecorder Caption If InStr AudioRecorder Caption End End Sub Private Dim Dim Dim cmdStop Enabled False cmdPlay Enabled True If Sub Wav2Txt FileNumber As Integer i As Single Temp As Byte i 45 Set I To 44 since the wave sample is begin at Byte 44 FileNumber FreeFile Open voz wav For Binary As Open voz dat For Output As Do Get FileNumber i Temp Num Temp 256 2 If CInt Num O Then Num stopped 0 Then FileNumber FileNumber 4 1 0 1 Print FileNumber 1 Num i i 1 Loop Until EOF FileNumber Close FileNumber Close FileNumber 1 WaveStatusMsg 54 End Sub frmEntrenamiento frm
38. ar metros de la se al de voz sta debe ser multiplicada por una apropiada ventana en el dominio del tiempo Esta multiplicaci n tiene dos efectos Primero aten a gradualmente la amplitud de los bordes del intervalo de extracci n para evitar un cambio abrupto Segundo produce la convoluci n en frecuencia de la funci n ventana y la se al de voz Es por tanto deseable que la funci n ventana satisfaga dos caracter sticas para reducir la distorsi n espectral Una es una alta resoluci n en frecuencia con un estrecho y agudo l bulo principal La otra es una baja p rdida espectral del resto de las frecuencias producida por la convoluci n Puesto que estas dos condiciones son contradictorias y es imposible satisfacer ambas existen una serie de funciones que llegan a un compromiso Entre stas la ventana Hamming se define como 2nz W n 0 54 0 46cos ua CG Esta ventana es normalmente empleada en an lisis de voz La ventana hamming tiene la ventaja de que su resoluci n en el dominio de la frecuencia es relativamente alta y su atenuaci n espectral es peque a puesto que la atenuaci n del primer l bulo lateral es mayor de 43 db Jackson 89 Otra ventana empleada es la ventana Hanning LU N 1 Aunque la ventaja de esta ventana es que sus l bulos laterales de orden alto son mas peque os que los de la ventana Hamming la atenuaci n del primer l bulo lateral es nicamente de 30 dB W n 0 5 0 5cos 08
39. calculo excel de Microsoft 20 6 Manual de usuario Una vez ejecutado el programa principal tras la instalaci n veremos una pantalla como la siguiente Figura 14 Elx Archivo Configuraci n Herramientas Ayuda r Control Audio ml e Conectar con BC Resultado Fig 14 Las partes mas importantes del programa son Si en el men pulsamos Configuraci n Audio nos aparece una ventana que nos permitir cambiar la frecuencia de muestreo el n mero de canales y la resoluci n D x r Frec muestreo Hz Canales Resolution C 44100 C stereo Ce 8 bits C 22050 mono C 16 bits C 11025 8000 C 6000 Ok Fig 15 Por defecto est puesta la frecuencia de muestreo a 8000 mono y 8 bits pero ser a posible configurarlo para que el sistema trabajase con una resoluci n mayor En todo el proyecto se ha trabajado con estos 21 datos para tomar como referencia una calidad telef nica suficiente para la inteligibilidad que es lo que en estos momentos nos interesa Pulsando Configuraci n Lego aparece la siguiente ventana Esta es la parte de comunicaci n con el robot y nos remitimos a lo comentado en el punto 4 Fig 16 Si pulsamos en el men Herramientas gt Entrenamiento nos aparecer una ventana en la que podemos configurar el entrenamiento Fig 17 La primera caja de texto nos pregunta el fichero con los datos de entrada E
40. debe ser solapado a lo largo de la se al de voz para facilitar el seguimiento de las variaciones del espectro con el tiempo El intervalo de an lisis multiplicado por una ventana se denomina trama En este trabajo vamos a realizar un solape de 80 muestras con ventanas Hamming de 240 muestras Gr ficamente se puede representar de la siguiente manera 240 muestras lt gt 80 muestras tiempo 3 3 LPC Linear predictive Coding Los par metros LPC son una t cnica muy importante de estimaci n espectral porque pueden proporcionar una indicaci n de los polos y de los formantes de la funci n de transferencia del tracto vocal Shaughnessy 90 El algoritmo LPC intenta predecir el valor de cualquier punto en un sistema lineal variante en el tiempo basado en los valores de las P muestras anteriores La representaci n solamente de polos de la funci n de transferencia del tracto vocal H z se puede representar por la siguiente ecuaci n G H z 9 l V az Los valores de a i se denominan coeficientes de predicci n mientras que G representa la amplitud o ganancia asociada con la excitaci n del tracto vocal La notaci n z indica un retardo en tiempo en el dominio de las transformadas en Z Los polos de la funci n de transferencia de la ecuaci n anterior se determinan de las raices del polinomio del denominador Debido a que el modelo LPC es un modelo todo polos ste puede capturar las frecuencias de r
41. e N corresponde a un n mero de discretos puntos en un intervalo de tiempo fijo La soluci n de autocorrelaci n a la ecuaci n anterior se puede expresar como R j Sa DRi j para IS j lt P i l donde RG es una funci n par R j R j y se calcula de la siguiente ecuaci n Ni R j Y s m s m j para 0 lt j lt P m 0 Una vez que el t rmino de la autocorrelaci n R j ha sido calculado usamos un algoritmo recursivo denominado recursi n de Durbin para determinar el valor de a i El estado inicial de la recursi n comienza con un t rmino de energ a EI R 0 G E Para calcular los siguientes estados realizamos las siguientes ecuaciones k i RG Sat RG j E paral sis P a i k i a j a j kG a i j para 1 lt jSi 1 El 1 k i E La soluci n final de a j es dada por a 7 para 1 lt j lt P Implementaci n La implementaci n de este algoritmo en C se encuentra en el fichero LPC CPP La definici n en C es la siguiente float lpc float X int polos Esta funci n calcula los par metros LPC de un array de datos indicando el array y el n mero de polos a extraer La funci n devuelve un puntero a la direcci n del primer valor en que se encuentran los valores de LPC El primer valor a 0 indica la energ a y el resto a 1 a polos son los valores de la funci n LPC mediante el m todo Levinson Durbin Ejemplo float X1 240 ta a lpc X1 10 Calcula
42. e la informaci n y la energ a est entre 1000Hz y 3000Hz Recuero 83 Por tanto estableciendo la frecuencia de muestreo en 8000Hz sabemos por los teoremas de Shannon y Nyquist Shannon 49 que podemos reproducir perfectamente sefiales de hasta 4000Hz suficientes para nuestro prop sito 2 2 Procesado de voz De nuestra se al de voz podremos extraer una informaci n mas interesante si pasamos del dominio del tiempo al de la frecuencia Para esto emplearemos el teorema de Fourier en concreto la transformada discreta de fourier DFT facilitado por el algoritmo FFT Jackson 89 Un conocido problema es la distorsi n producida al procesar directamente X muestras de voz en el FFT Para evitar esto empleamos una funci n ventana bien Hamming o Hanning Cuando la ventana de an lisis aumenta la frecuencia de resoluci n aumenta puesto que el tiempo de resoluci n disminuye Por otro lado cuando la longitud de la ventana de an lisis se acorta el tiempo de resoluci n aumenta y la frecuencia de resoluci n disminuye Los par metros LPC Furui 89 son una t cnica muy importante de estimaci n espectral porque pueden proporcionar una indicaci n de los polos y de los formantes de la funci n de transferencia del tracto vocal El mayor inconveniente es que al calcular s lo los polos la extracci n de LPC funciona bien en sonidos sonoros pero no es demasiado fiable en sonidos sordos A n as lo vamos a utilizar porque extraer entre 5 y
43. en Mayor ValorSalida i SalidaMayor i End If Next i If Mayor 0 Then SalidaMayor 0 Select Case SalidaMayor Case O lblNota Caption Case 1 lblNota Caption Do Case 2 lblNota Caption RE Case 3 lblNota Caption MI Case 4 lblNota Caption FA Case 5 lblNota Caption SOL End Select Salida al lego Le informamos de la nota que debe tocar f chkRCX Value 1 And SalidaMayor 0 Then frmLego Nota Click SalidaMayor 1 End Sub Private Sub Form Load WaveReset Rate CLng GetSetting AudioRecorder StartUp Rate 8000 Channels CInt GetSetting AudioRecorder StartUp Channels 1 Resolution CInt GetSetting AudioRecorder StartUp Resolution 8 WaveRecordingImmediate True WaveRecordingReady False WaveRecording False WavePlaying False WaveSet End Sub Private Sub Form Unload Cancel As Integer WaveClose Call SaveSetting AudioRecorder StartUp Rate CStr Rate Call SaveSetting AudioRecorder StartUp Channels CStr Channels Call SaveSetting AudioRecorder StartUp Resolution CStr Resolution Call SaveSetting AudioRecorder StartUp WaveFileName WaveFileName Call SaveSetting AudioRecorder StartUp WaveAutomaticSave CStr WaveAutomaticSave If WaveRenameNecessarv Then Name WaveShortFileName As WaveLongFileName WaveRenameNecessary False WaveShortFileName End If End End Sub 53 Private
44. esonancia o formantes pero no los ceros que son importantes para los sonidos nasales Adem s LPC no estima adecuadamente las se ales que no tienen polos tal como los sonidos sordos y el ruido De hecho componentes no lineales tales como el ruido afectan de forma adversa a la estimaci n LPC EI Modelo LPC Para la se al de voz s n producida por un sistema lineal la muestra de voz predicha 71 es una funci n de a i y de las anteriores muestras de voz de acuerdo con s n Y a i s n i El an lisis LPC pretende obtener los t rminos a i de acuerdo con el criterio del m nimo error cuadr tico El error se define como e n s n s n s n Y alista i Tomando la derivada del error cuadr tico medio con respecto a los coeficientes a i e igual ndola a 0 resulta 2 s n Y a i s n i 0 dot j s n Y asta s n j 0 paral lt j lt P i l Por tanto P s n s n j a ijs n i s n j para IS lt P i l Hay varios m todos para resolver esta ecuaci n de coeficientes de predicci n Comentaremos el m todo de autocorrelaci n con el algoritmo de Levinson Durbin Furui 89 por ser ste el algoritmo implementado para extraer los par metros LPC en nuestro proyecto M todo de Autocorrelaci n Levinson Durbin Este m todo supone que la se al es estacionaria dentro de la ventana de an lisis Esta suposici n se puede satisfacer con una funci n ventana w m 0 lt m lt N 1 dond
45. k k kk k K k K K K K Ck KOK K KOK K K KOK K KOK K KOK K RX A RR kk OK R KOR k AE kc R OR ke OR include stdafx h include lt stdlib h gt include lt stdio h gt include lt math h gt include lt conio h gt include alloc h float lpc float X int polos float imp dat ascii char nombre 30 float hamming int float lpccep float X int polos Excel a reme a a E Qi SaaS ae comienzo de la funcion entrenamiento SC rex a e EE GS GES Gui XS e dd qr bool stdcall EntrenamRNN char argvl int argv2 char argv3 bool stdcall EntrenamRNN char argvl int argv2 char argv3 je declaramos variables tal static int pant n fic static float error 0 sum error 0 static float x nod 4 61 11 matriz de nodos static float w 4 6 41 11 matriz de pesos static float w_inc 4 6 4 11 matriz de incremento de pesos Static float increm 0 static float w sal 156 array de salida de pesos static int dimen array 0 dimensiones del array de datos static float data bin ham puntero del array de datos static int 11 12 13 14 z variables para bucles Static char buffer1 20 static char nom cont static float x_nod2 6 0 0 0 0 0 0 static float delta 4 6 11 FILE pf pfl int conv 0 i 0 static float S int ta ca static float X1 240 X2 240 static float puntl purnt2 float sum 0 static float resp des
46. las cajas de imagen vemos la sefial en tiempo y en las otras 5 la salida de cada una de las redes Como podemos observar el sistema ha reconocido claramente que se trata de la palabra do En este caso la o intenta excitar la salida de la red sol pero pierde claramente en la competencia frente al la red do 24 Control Audio Fichero de voz US la red Conectar con ACX NI Resultado Resultado Mi po Fa fo MXN CS ern Sol 4 NM Fig 18 Para analizar los datos mediante un programa matem tico u hoja de c lculo los datos de salida quedan almacenados en 5 ficheros en la carpeta resultados salidal dat salida 2 dat salida5 dat 1M L ANI le A JU awa mae A ma TTIE NA AAA KR Fig 19 si pulsamos la opci n de conectar con RCX directamente la informaci n de nota ser transmitida al robot LEGO para que ejecute la nota correspondiente 25 Haciendo pruebas mas exhaustivas hemos obtenido los siguientes resultados Do Re Mi Fa o E a Fig 20 Do Re Mi Fa Fig 21 Sol Sol Salida Red DO Salida Red RE Salida Red MI Salida Red FA Salida Red SOL 26 27 Do Re Mi Fa Sol eee LE d HI Des Fig 25 Hemos se alado con un c rculo rojo los posibles errores de activaci n de cada red si actuasen de forma independiente Como podemos observar en el momento en que se
47. mos que el robor se encuentra en una mesa sin mas obst culos que el teclado por medio de dos sensores de infrarrojos podemos colocar el robot de forma paralela al mismo con una distancia determinada listo para buscar la posici n inicial con la webcam 30 8 Bibliograf a Alexander 90 I Alekxander H Morton An introduction to neural Computing Chapman Hall 1990 Arkin 98 Ronald C Arkin Behavior Based Robotics MIT Press 1998 Bagnan 02 Brian Bagnall Lego mindstorms programming prentice hall 2002 Bekey 93 G A Bekey K Y Goldberg Neural Networks in Robotics Kluwer Academic Publisheres 1993 Bernal 00 J Bernal J Bobadilla P G mez Reconocimiento de voz y fon tica ac stica Ra Ma 2000 Br o 01 B Mart n del Br o A Sanz Molina Redes neuronales y Sistemas Borrosos Ra Ma 2001 Ceballos 91 Fco Javier Ceballos Enciclopedia del lenguaje C Ra Ma 1991 Ceballos 96 Fco Javier Ceballos Enciclopedia de Visual Basic Ra Ma 1996 Ceballos 02 Fco Javier Ceballos Microsoft Visual C Ra Ma 2002 Connell 93 J H Connell S Mahadevan Robot learning Kluwer Academic Publishers 1993 Dayhoff 90 Judith E Dayhoff Neural Networks Architectures Van Nostrand Reinhold New York 1990 Furui 89 Sadaoki Furui Digital Speech Processing Synthesis and Recognition Marcel Dekker INC 1989 Hilera 95 J R Hilera V J Martinez Redes Neuronales Artificiales
48. mp CStr Channels amp bytespersec amp CStr Alignment Rate 51 WaveReset WaveSet WaveRecord WaveRecordingStartTime Now cmdStop Enabled True Enable el boton de STOP cmdPlay Enabled False Disable el bot n de PLAY cmdRecord Enabled False Disable el bot n de RECORD End Sub Private Sub cmdStop Click WaveStop cmdPlav Enabled True cmdStop Enabled False If WaveRecording Then WaveRecordingReady True WaveRecordingStopTime Now WaveRecording False WavePlaying False WaveSaveAs App Path amp voz wav Guardamos el resultado en un f Wav2Txt Convertimos el wav a txt para pasar el resultado a la re de trabajar Pasamos el fichero voz dat por cada una de las redes entrenadas y salida f ResultadoRNN rnn do rnn voz dat resultado salidal dat MsgBox Error de lectura de fichero End f ResultadoRNN rnn re rnn voz dat resultado salida2 dat MsgBox Error de lectura de fichero End f ResultadoRNN rnn mi rnn voz dat resultado salida3 dat MsgBox Error de lectura de fichero End f ResultadoRNN rnn fa rnn voz dat resultado salida4 dat MsgBox Error de lectura de fichero End f ResultadoRNN rnn sol rnn voz dat resultado salida5 dat MsgBox Error de lectura de fichero End RepresentarEntrada Funci n de representaci n de entrada CalcularSalida Funci n que calcula la salida optima cmdRecord Enabled Tr
49. n m s lento Visual Basic o incluso JAVA incrementar a el tiempo de trabajo considerablemente Portabilidad el hecho de escribir la red en ficheros dll con funciones que pueden ser llamadas desde el exterior permite que desde otro lenguaje de programaci n mas sencillo ej Vbasic se establezca la interfaz de usuario encapsulando la complejidad en C El inconveniente de usar un programa matem tico o un simulador es la necesidad de trabajar siempre dentro de ese programa y no con un exe independiente Adem s las funciones empleadas fft cpp lpc cpp hamming cpp pueden ser reutilizadas por cualquier persona con conocimientos en C El C empleado es est ndar ANSI C que tiene la ventaja de poder ser exportado a otros sistemas operativos distintos de Microsoft windows Todos los datos del tipo N h cd los hemos implementado en estructuras matriciales de la forma N a b c d Esto tiene el inconveniente de una p rdida considerable de memoria debido a la necesidad de reservar un espacio a b c d datos que no siempre son necesarios La ventaja evidentemente es la facilidad de programaci n Hay que destacar tambi n que el tipo de datos empleado es ASCII Para todas las operaciones de lectura y escritura en fichero se emplean datos ASCII separados por retorno de carro De esta manera facilitamos la extracci n y lectura de datos por cualquier programa matem tico u hoja de c lculo Los datos pueden visualizarse directamente en una hoja de
50. ndes pueden conducir a inestabilidad de la red valores peque os a entrenamientos lentos Esta variable tambi n puede variar a lo largo del entrenamiento 12 La principal ventaja es este tipo de redes radica en su tremenda posibilidad de aprender patrones diferentes Esta red no requiere ning n conocimiento a priori de las funciones que van de la entrada a la salida por lo que pueden ser usadas en un amplio espectro de posibilidades en nuestro caso para tareas de reconocimiento de voz como veremos posteriormente El principal inconveniente es el tiempo de entrenamiento necesario hasta minimizar el error Pueden ser necesarias cientos e incluso miles de iteraciones para conseguir la convergencia de la red Otro problema es la posibilidad de llegar a m nimos locales en el entrenamiento con lo que la red puede quedar atrapada en un m nimo local y no llegar al entrenamiento ptimo Existen diversos algoritmos para intentar solventar este problema Redes Recurrentes Las redes neuronales recurrentes se caracterizan por tener dos caminos Un camino directo hacia la salida y un lazo de realimentaci n El motivo principal de usat redes recurrentes para modelos temporales es que permite representar el efecto que tiene el tiempo en la secuencia a procesar En la mayor a de las redes recurrentes la activaci n de los nodos en la capa q en el instante t se almacena en unos nodos de contexto context node que pueden ser usados como entrada ge
51. neralmente dentro de la misma capa en el instante t 1 Los pesos entre los nodos de contexto y los nodos a los que alimentan se denominan pesos de contexto context weight La figura siguiente ilustra una red recurrente completamente interconectada con nodos de contexto Los nodos de contexto los representamos con cuadrados Este es el esquema de implementaci n que usaremos en el presente trabajo O Fig 11 Modelo de Flujo Temporal El modelo de flujo temporal dise ado por Watrous y Shastri Watrous 87 usa una red de tres capas en la cual cada nodo de la capa oculta y de la capa de salida contiene autotransiciones con un tiempo de retardo La red de flujo temporal permite a los pesos de contexto que sean actualizados por back propagation Con el fin de entrenar esta red la salida deseada puede ser expresada como una funci n del tiempo Esto es un cambio significativocon respecto a las redes est ticasen las cuales la respuesta deseada es fija para un determinado patr n La selecci n de una apropiada funci n respuesta dependiente del tiempo es un proceso emp rico sin embargo la especificaci n del comportamiento de la red en tiempo es muy importante porque la funci n objetivo target determina como ser n actualizados los pesos de la red Una t pica funci n objetivo puede ser la siguiente r t 0 5d t T tipo rampa r t 1 ae PT tipo exponencial donde T tiempo total t cada una de las subdivisiones de T 13 Si lo q
52. nota robot retrasa 1 nota RGE RAR AAA RAR RRA RRA RARA RAEE EEES DEIS Movimiento del robot para situarse en la nota correspondiente ERES If VAR 3 DIF CTE If VAR 3 MENO SetRwd MOTOR C EndIf If VAR 3 MAYO SetFwd MOTOR C ioo si var 3 no es 100 CTE O si variable 3 es menor que O MOtor atr s CTE O si variable 3 es mayor que O motor adelante EndIf On MOTOR C motor C on AbsVar 3 VAR 3 quitamos signo a la variable 3 Loop VAR 3 l loop en funci n de var 3 Wait 2 20 esperamos 200ms en ese tiempo no puede haber 2 pasos de nota While SENVAL SENSOR 3 MAYO CTE txtSensorLuz Text No hacemos nada mientras que EndWhile de luz sea mayor que el umbral EndLoop SetVar 3 CTE O l andamos al robot a tocar nota poniendo var 3 igual a O EndIf EA Movimiento del brazo del robot para tocar nota AAA If VAR 3 IG CTE Off MOTOR C SetFwd MOTOR A On MOTOR A si var 3 es O paramos el motor de movimiento encendemos el motor del brazo While SENVAL SENSOR 1 IG CTE O0 mientras no toquemos el sensor de colision EndWhile SetRud MOTOR A Wait CTE 50 Off MOTOR A SetVar 3 CTE EndIf EndLoop 100 cambiamos el sentido de giro del motor dejamos medio segundo que suba el brazo paramos el motor del brazo variable 3 lista para recibir nueva nota 17 5 Topolog a de la red Par metros El sistema implementado es una
53. nterScreen kRCX Conectar con RCX 255 360 22 4320 935 imgSalida amp HOOFFFFFF amp 575 5 6480 01 3 Pixel 413 21 20 6255 imgSalida amp HOOFFFFFF amp 1575 4 6480 101 gt Pixel 413 20 8520 6255 imgSalida amp HOOFFFFFF amp 1575 3 6480 101 3 Pixel 413 19 6840 6255 imgSalida amp HOOFFFFFF amp 1575 2 6480 101 3 Pixel 413 18 5160 6255 imgSalida amp HOOFFFFFF amp 1575 48 Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End 3 Pixel 413 17 3480 6255 Begin VB PictureBox imgSalida BackColor Height Index Left ScaleHeight ScaleMode ScaleWidth TabIndex Top Width End Begin VB TextBox Height Left TabIndex Top Width End Begin VB TextBox Height Left TabIndex Top Width End Begin VB TextBox Height Left TabIndex Top Width End Begin VB TextBox Height Left TabIndex Top Width End Begin VB TextBox Height Left TabIndex Top Width End Begin VB CommandButton Caption Enabled Height Left TabIndex ToolTipText Top Width End Begin VB CommandButton Caption Enabled Height Left TabIndex ToolTipText Top Width End amp HOOFFFFFF amp 1575 0 6480 101 3 Pixel 413 16 1800 6255 285 5640 10 8520 615 285 5640 6840 615 285 5640 5160 615 285 5640 3480 615 285 5640 6 1800 615 cmdPlay Play 0 False 495 3720 2 Play the recording 480 1215
54. produce la competencia entre las redes de salida disparada por un umbral de energ a de la se al de voz el resultado de acierto se encuentra en torno al 9590 De las 25 muestras de voz tomadas s lo hay un caso de error en la salida respuesta sol con la s laba do Est marcado por un rect ngulo rojo en la figura 23 28 7 Conclusiones En este trabajo hemos realizado un sistema limitado de reconocimiento de voz por redes neuronales realimentadas cuya salida es aplicada a un robot para que realice una tarea Los resultados obtenidos han sido bastante satisfactorios Separando ambas partes podemos afirmar que el reconocimiento de voz est en torno al 95 29 de acierto y el robot lleva a cabo su tarea pr cticamente con un 100 de efectividad Evidentemente las tareas impuestas en ambas partes eran limitadas El sistema de reconocimiento tiene un vocabulario limitado de 5 palabras dependiente del hablante y palabras separadas por silencio y el robot necesita ser situado en su posici n inicial desplaz ndose en una direcci n y dos sentidos A n as pensamos que el trabajo realizado puede ser un punto de partida para un trabajo mas extenso y ambicioso de reconocimiento de voz con implicaciones pr cticas A la vista de los resultados podemos afirmar que este tipo de estructuras realimentadas pueden ser empleadas con gran acierto formando parte de sistemas m s complejos encargados de reconocimiento de palabras y frases conec
55. sizeof float c complex calloc 240 sizeof complex E AAA AAA Funedon HEM SS for 3 0 3 lt N 2 3 for n 0 n lt N 1 n a 2 0 M PI j N 1 n a2 complex 0 a sum x n exp a2 S S sum c 31 8 s 0 0 c salljl l1og10 abs c lj j free c return c sal 40 LPC CPP include stdafx h include stdio h include lt stdlib h gt include lt math h gt float lpc float X int polos Funcion principal static float a_sal 11 array de salida float R array de valores R intermedios int j 0 m 0 float sum 0 float G int i 0 int z float a 11 11 S 0 k2 float E R float calloc 11 sizeof float k2 float calloc 11 sizeof float E float calloc 11 sizeof float for m 0 m lt 239 3 m sum X m X m j RIjl RIjl sum Comenzamos el metodo de Levinson Durbin for 3 0 3 lt 10 3 for i 0 i lt 10 i alillijl 0 E 0 R 0 for i 1 is polos iHH s 0 for 3 1 3 lt 1 1 3 sum a 1 1 3 1 R i 31 S S sum k2 i R i S E i 1 a i i k2 i for 3 1 3 lt 1 1 3 a z tjjse z i Ejl k2 z a i 1 r E i 1 0 k2 i k2 i E i 1 41 sum a polos z R z S S sum G sqrt fabs double R 0 S salida de datos a_sal 0 G for z 1 z lt polos z a_sal z a polos z 42 HAMMING cpp e ji e i ti i a e te i e i a
56. ste fichero debe tener una estructura similar a la siguiente 22 notas re_1 da Q de voz en ascii notas do_1 dat 1 a E Entrenamiento 0 notas so 0 notas do notas re 2 dat negativo 0 notas mi 2 dat 0 notas fa 2 dat 0 notas sol 0 notgs do 3 dat 1 notas re 3 dat 0 notas mi 3 dat 0 notas fa 3 dat 0 notas sol 3 dat 0 Separados por retorno de carro en el fichero de texto se encuentra el path de los ficheros de audio para entrenar Debajo del fichero con un 1 o un 0 indicamos si el entrenamiento a realizar para es fichero ser positivo o negativo es decir si queremos que reconozca o no esa nota musical Este proceso se debe realizar 5 veces una por cada nota En la segunda caja de texto introducimos el path de la red de salida Los ficheros en los que se encuentran los datos de la red son los RNN La estructura de estos ficheros est formada por un valor de cabecera V y los datos en ascii correspondientes al valor de los pesos de las conexiones En la ltima caja de texto indicamos el n mero de iteraciones para el entrenamiento El tiempo que tarda el sistema en realizar el entrenamiento es proporcional al n mero de iteraciones Sobre un pentium IV a 2 5GHz un entrenamiento de 250 iteraciones de 15 ficheros de voz tarda aproximadamente 20 segundos Las muestras de voz deben estar correctamente cortadas para el entrenamiento Para ello hemos incluido una utilidad de edici n de ficheros de
57. tadas Figura 20 Reconocimiento Procesado del Salida de de s labas y lenguaje para cadena de fonemas por distinguir palabras medio de una o subpalabras varias redes palabras neuronales pr ximas recurrentes fon ticamente Fig 20 En realidad esta forma de trabajar podr a parecerse al funcionamiento del cerebro humano Obtenemos informaci n de una serie de sonidos y fonemas y con el m dulo de procesado del lenguaje intentamos que tome sentido para formar palabras y frases Otras t cnicas a tener en cuenta en una futura ampliaci n del proyecto ser an Dinamic Time warping DTW y Modelos Ocultos de Markov HMM no comentados en este trabajo por salirse del mbito de las redes neuronales as como el conocido trabajo de kohonen del mapa fonot pico Kohonen 88 En el caso del robot una primera ampliaci n ser a la detecci n de la posici n inicial por medio de una web cam estableciendo un matching entre un grid de una imagen en memoria y un grid de una imagen capturada con la c mara Esto posiblemente dar a buen resultado teniendo en cuenta la disposici n en teclas negras y blancas de un teclado Buscamos con la webcam el grid similar al de memoria para posici n inicial Fig 21 29 Una segunda ampliaci n que el robot llegase hasta el teclado y se colocase paralelo al mismo para buscar la posici n inicial Para esto ser a necesario un segundo motor y al menos dos sensores de infrarrojos Si supone
58. termina el paso de nota El bot n de la parte inferior transfiere el programa al RCX seg n el n mero elegido 1 5 15 pm aix Notas ESTOS Nota Actual Nota Anterior Obtener datos Sensor Luz 48 Mandamos informaci n de nota al RCX Obtenemos los datos de la posici n actual Calibraci n del sensor de luz Programa 1 Programa al RCX Mandamos el programa interno del RCX Las equivalencias del valor de las notas son las siguientes 1 do 2 re 3 mi 4 fa 5 sol Por tanto simplemente con el siguiente c lculo obtenemos el n mero de pasos de nota El signo indicar el sentido del motor PasosNotas ValorActual ValorAnterior En el RCX almacenamos 3 variables Var 1 ValorActual Var 2 ValorAnterior Var 3 PasosNotas La variable 3 rige completamente el funcionamiento del robot Esta puede tomar los siguientes valores 100 robot parado 0 robot toca nota 1 robotadelanta 1 nota 2 robot adelanta 2 notas 1 robot retrasa 1 nota 2 robot retrasa 2 notas El bucle principal del robot es el siguiente Fichero frmLego frm Pod d d d ttt tt ttt AA A Bucle principal infinito VW A amp A 4 A n n RR RS RAEE ET Loop CTE O LARREA RARA AAA RRA RAR ARENA EEN AREA La variable 3 rige el comportamiento Bei robot Los valores posibles son 100 O 1 2 1 l 2 robot parado robot toca nota robot adelanta 1 nota robot adelanta 2 notas robot retrasa 1
59. ue End Sub Private Sub cmdPlay Click WavePlayFrom 0 WavePlaying True cmdStop Enabled True cmdPlay Enabled False End Sub Private Sub RepresentarEntrada Funci n que representa gr ficamente la forma de onda de la entrada ii O imgSalida 5 Cls NumFichero FreeFile Open App Path amp voz dat For Input As NumFichero Do ii ii 1 80 Line Input NumFichero strLinea imgSalida 5 Line ii 50 CInt strLinea Loop Until EOF NumFichero Close NumFichero End Sub Private Sub CalcularSalida Dim ValorSalida 6 As Integer Representamos la forma de onda de cada salida For i 1 To 5 ii O imgSalida i 1 Cls NumFichero FreeFile Open App Path amp resultado salida amp i amp dat For Input As Do ii ii Line Input fNumFichero strLinea Sumamos al ValorSalida si sobrepasamos el valor de 75 en If CInt strLinea gt 75 Then ValorSalida i ValorSalida i imgSalida i 1 Line ii 100 CInt strLinea Loop Until EOF NumFichero ichero wav d Es m s c modo obtenemos la False Then False Then False Then False Then False Then NumFichero la salida y d 52 Close NumFichero Next i Textl Text ValorSalida 1 Text2 Text ValorSalida 2 Text3 Text ValorSalida 3 Text4 Text ValorSalida 4 Text5 Text ValorSalida 5 Calculamos el ValorSalida Mayor Mayor ValorSalida 1 SalidaMayor 1 For i 2 To 5 If ValorSalida i Mayor Th
60. ue queremos es que se produzca un rechazo a la entrada la funci n ser 1 r t Implementaci n Todo el algoritmo back propagation de la red recurrente con el entrenamiento siguiendo el modelo del flujo temporal en C se encuentra en el fichero entrenam2003 cpp optimizado para el caso particular de la red implementada Por medio del proyecto entrenamDLL en C generamos un fichero DLL con una funci n con la que comunicarnos con el proyecto global en Vbasic En esta DLL hacemos referencia a las funciones de los ficheros hamming cpp y Ipc cpp comentadas con anterioridad Para hacer uso de esta DLL en Vbasic tenemos que hacer una llamada a la funci n Private Declare Function EntrenamRNN Lib entrenam dil ByVal FicheroEntrada As String ByVal lteraciones As Integer ByVal FicheroSalida As String As Boolean Llamada a la funci n Retorna false si error boolEntrenam EntrenamRNN txtEntrada intlteraciones txtSalida txtEntrada path del fichero con los datos del entrenamiento IntIteraciones n mero de iteraciones en el entrenamiento txtSalida path del fichero donde se escribe la red entrenada La implementaci n se encuentra en el fichero frmEntrenamiento frm del proyecto UNED VB 2003 de Visual Basic 14 4 Implementaci n del robot El robot fue realizado mediante el kit de lego mindstorms 1 5 La comunicaci n con el robot la realizamos en Vbasic mediante el ocx spirit ocx incluido en el CD de instalaci n Uno de los
61. ute VB GlobalNameSpace False Attribute VB Creatable False Attribute VB PredeclaredId True Attribute VB Exposed False Option Explicit Private Declare Function EntrenamRNN Lib entrenam dll ByVal FicheroEntrada As String ByVal Iteraciones As Integer ByVal FicheroSalida As String As Boolean Private Sub btnAceptar Click Dim boolEntrenam As Boolean Dim Iteraciones As String If txtEntrada Text Then MsgBox Por favor introduce el nombre del fichero de entrada de datos Exit Sub End If If txtSalida Text Then MsgBox Por favor introduce el nombre del fichero de salida de la red entrenada Exit Sub End If Iteraciones txtIteraciones Text Me MousePointer 11 btnAceptar Enabled False On Error Resume Next boolEntrenam EntrenamRNN txtEntrada Text Iteraciones txtSalida Text Me MousePointer 1 btnAceptar Enabled True End Sub 56 frmLego frm VERSION 5 00 Object D6CD40C0 A522 11D0 9800 D3C9B35D2C47 1 0 0 Begin VB Form frmLego Caption Lego ClientHeight 4755 ClientLeft 3705 ClientTop 3615 ClientWidth 3465 Icon frmLego frx 0000 LinkTopic Forml ScaleHeight 4755 ScaleWidth 3465 Begin VB TextBox txtPrograma Height 285 Left 1560 TabIndex 15 Text mu Top 3360 Width 615 End Begin VB TextBox txtSensorLuz Height 285 Left 1560 TabIndex 14 Text 48 Top 2640 Width 615 End Begin VB TextBox Text2 Height 285 Left 1560
62. z lt 5 zt t sum x_nodR 2 z 0 wR 2 1 z1 0 S2 S2tsum x nodR 3 0 0 21 0 1 0 exp double S2 actual salida de red retardo for z 1 z 5 z x nodR 1 1 z x_nodR 2 z 0 45 do fsetpos pf amp desp for z 0 z lt 239 z fgets buffer2 20 pf if z 79 fgetpos pf amp desp datos1 z atof buffer2 ham z mayor C fsetpos pf amp desp for z 20 z 239 z fgets buffer2 20 pf datos2 z atof buffer2 ham z mayor C llamamos a la funci n lpc puntl 1pc datos1 10 punt2 1pc datos2 10 colocamos los correspondientes valores lpc en sus correspondientes tramas for 13 1 13 lt 10 13 x nodR 1 2 13 punt1 13 x nodR 1 3 13 2 punt2 13 comenzamos el c lculo for 11 6 11 lt 10 11 nodos vacios x nodR 1 1 11 20 0 calculo de funci n sigmoidal for z 0 zs 6 zH4H s1 z 0 0 for z 1 z lt 5 z capa intermedia SCH 11 1 11 lt 3 11 en re ores sum x_nodR 1 11 12 wR 1 2 11 12 S1 z S1 z sum x nodR 2 z 0 1 0 1 0 exp double S1 z tomando B 1 X2 z 1 x_nodR 2 z 0 c lculo de funcion sigmoidal capa de salida s2 0 0 for z 1 z 5 z sum x nodR 2 z 0 wR 2 1 z1 0 S2 S2 sum x nodR 3 0 0 1 0 1 0 exp double S2
Download Pdf Manuals
Related Search
Related Contents
IN1009 Operating Instructions Harmony 1 Gas ProScan PLD3283C User's Manual LIMPIADOR DE ACERO I OXIDABLE MPL Rechargeable Battery Handles and Chargers General CAPRI BELIZE PACIFIC RHINO HP G6 User's Manual Bosch Power Tools LBB 1961 User's Manual Le UE32D5000ZF prouve qu`une LED TV peut être KOHLER K-702202-L-SHP Installation Guide Remington WDF4815 lady shaver Copyright © All rights reserved.
Failed to retrieve file