{"id":1481,"date":"2017-01-25T08:14:38","date_gmt":"2017-01-25T13:14:38","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/estg1003\/?p=1481"},"modified":"2026-04-16T09:30:07","modified_gmt":"2026-04-16T14:30:07","slug":"senal-sonido-correlacion-2senales","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/stp-aplica\/senal-sonido-correlacion-2senales\/","title":{"rendered":"Se\u00f1al Sonido - Correlaci\u00f3n entre dos se\u00f1ales de audio"},"content":{"rendered":"\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ccpg1001\/archivos-de-audio-wav-abrir-extraer-una-porcion\/\">Archivos de Audio.wav \u2013 Abrir, extraer una porci\u00f3n<\/a><\/p>\n\n\n\n<p>Para comparar dos se\u00f1ales de sonido se puede usar la operaci\u00f3n de correlaci\u00f3n.<\/p>\n\n\n\n<p>Por ejemplo, usando dos archivos.wav, se compara las partes de una canci\u00f3n cantada por diferentes personas. Cada parte se obtiene de los archivos se\u00f1al01 y se\u00f1al02 semejantes a las siguientes:<\/p>\n\n\n\n<p><strong><em>se\u00f1al01<\/em><\/strong>: <a href=\"https:\/\/www.dropbox.com\/s\/34i6ywbg1cjtg0f\/elaguacate_muestra01.wav?dl=0\">elaguacate_muestra01.wav<\/a><br><em><strong>se\u00f1al02<\/strong><\/em>: <a href=\"https:\/\/www.dropbox.com\/s\/lwbw59bqeiif7t9\/elaguacate_muestra02.wav?dl=0\">elaguacate_muestra02.wav<\/a><\/p>\n\n\n\n<p>la correlaci\u00f3n, destaca las partes en que las se\u00f1ales son semejantes como se muestra en la gr\u00e1fica.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2018\/01\/correlacionsonido01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1066\" height=\"665\" src=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2018\/01\/correlacionsonido01.png\" alt=\"\" class=\"wp-image-1482\" \/><\/a><\/figure>\n\n\n\n<p><em><strong>Tarea<\/strong><\/em>: Realice las observaciones y recomendaciones al proceso, realizando el ejercicio con una canci\u00f3n diferente a la mostrada. Use la seleccionada para otras tareas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instrucciones en Python<\/h2>\n\n\n\n<p>Para el algoritmo, la primera se\u00f1al de menor duraci\u00f3n, la segunda es la se\u00f1al de mayor duraci\u00f3n.<\/p>\n\n\n\n<p>Las se\u00f1ales se normalizan en el rango [0,1] previo a procesar la correlaci\u00f3n.<\/p>\n\n\n\n<p>Para que las gr\u00e1ficas sean proporcionales en el eje de tiempo, a la se\u00f1al01 se aumenta valores de cero o relleno.<\/p>\n\n\n\n<p>Puede quedar como tarea, convertir el eje x en unidades de tiempo en lugar del n\u00famero de la muestra.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# analiza correlaci\u00f3n entre dos muestras\n# supone que se\u00f1al01 es m\u00e1s corta que se\u00f1al02\n# propuesta:edelros@espol.edu.ec\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport scipy.io.wavfile as waves\n\n# Un canal en caso de estereo\ndef extraeuncanal(sonido):\n    canales=sonido.shape\n    cuantos=len(canales)\n    canal = 0\n    if (cuantos==1): # Monof\u00f3nico\n        uncanal=sonido&#x5B;:]\n    if (cuantos&gt;=2): # Est\u00e9reo\n        uncanal=sonido&#x5B;:,canal]\n    return(uncanal)\n\n# PROGRAMA\n# INGRESO\n# archivo01 = input('archivo de sonido 01:' )\n# archivo02 = input('archivo de sonido 02:' )\narchivo01 = 'elaguacate_muestra01.wav'\narchivo02 = 'elaguacate_muestra02.wav'\n\nmuestreo, sonido = waves.read(archivo01)\nsenal01 = extraeuncanal(sonido)\n\nmuestreo, sonido = waves.read(archivo02)\nsenal02 = extraeuncanal(sonido)\n\n# PROCEDIMIENTO\ntamano01 = len(senal01)\ntamano02 = len(senal02)\n\n# Normaliza las se\u00f1ales\namplitud = np.max(senal01)\nsenal01 = senal01\/amplitud\nsenal02 = senal02\/amplitud\n\n# Correlaci\u00f3n para comparar\ncorrelacion = np.correlate(senal01,senal02, mode='same')\n\n# SALIDA\n# unifica dimensiones de se\u00f1al01 y se\u00f1al02\nextra = np.abs(tamano01-tamano02)\nrelleno = np.zeros(extra,dtype=float)\nsenal01relleno = np.concatenate((senal01,relleno),axis=0)\nplt.suptitle('Correlaci\u00f3n(se\u00f1al01,se\u00f1al02)')\n\nplt.subplot(311)\nplt.plot(senal01relleno,'g', label = 'se\u00f1al01')\nplt.legend()\n\nplt.subplot(312)\nplt.plot(senal02,'b', label = 'se\u00f1al02')\nplt.legend()\n\nplt.subplot(313)\nplt.plot(correlacion,'m', label = 'correlaci\u00f3n')\nplt.legend()\n\nplt.show()\n\n<\/pre><\/div>\n\n\n<p>Para extraer una porci\u00f3n de audio de un archivo.wav, revise las instrucciones en el tema:<\/p>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ccpg1001\/archivos-de-audio-wav-abrir-extraer-una-porcion\/\">Archivos de Audio.wav \u2013 Abrir, extraer una porci\u00f3n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Referencia: Archivos de Audio.wav \u2013 Abrir, extraer una porci\u00f3n Para comparar dos se\u00f1ales de sonido se puede usar la operaci\u00f3n de correlaci\u00f3n. Por ejemplo, usando dos archivos.wav, se compara las partes de una canci\u00f3n cantada por diferentes personas. Cada parte se obtiene de los archivos se\u00f1al01 y se\u00f1al02 semejantes a las siguientes: se\u00f1al01: elaguacate_muestra01.wavse\u00f1al02: elaguacate_muestra02.wav [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-stp-ejercicios","format":"standard","meta":{"footnotes":""},"categories":[202],"tags":[],"class_list":["post-1481","post","type-post","status-publish","format-standard","hentry","category-stp-aplica"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=1481"}],"version-history":[{"count":1,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1481\/revisions"}],"predecessor-version":[{"id":22305,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1481\/revisions\/22305"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}