Contexto

Durante esta actividad crearemos un audio a partir de texto (text to speech) haciendo uso de la API “Text-to-speech” de OpenAI, una vez obtenido el audio haremos uso de una de las herramientas básicas de efectos de audio la cual es la generación de eco.
El eco es en sí una forma en la que se retrasan las ondas de audio, es decir que se mueven un poco hacia la derecha para que las señales de audio obtengan este característico “delay”.

Actividad

Creación del audio (Python)

Durante esta primer fase del proceso es necesario crear un audio mediante la API de Text-to-speech de OpenAI, a continuación se muestra el código creado en python:

Una vez extraido el audio, procedemos a realizar las modificaciones necesarias en R…

Modificación del audio (R)

library(signal)
library(audio)
library(tuneR)

Pirmero debemos importar el audio generado con AI y lo ocnvertimos en un formato que podamos manipular

file_path <- "speech_equipo.mp3"
audio_data <- readMP3(file_path)

y <- audio_data@left
Fs <- audio_data@samp.rate

A continuación establecemos los parámetros del eco y lo generamos, en este caso con 0.25 segundos de delay y procedemos a generaro con las funciones

alpha <- 0.9
D <- 0.25 * Fs  

echo <- numeric(length(y) + D)
echo[1:length(y)] <- y
echo[(D+1):(D+length(y))] <- alpha * y

Finalmente sumamos el audio original y el eco que creamos y guardaoms el resultado como un nuevo audio

x <- y + echo[1:length(y)]

new_audio <- Wave(x, samp.rate = Fs)

#output_file <- "speech_equipo_with_echo1.wav"
#writeWave(new_audio, filename = output_file)

Es así como concluimos este proceso, con un nuevo audio que contiene cierto delay en sus ondas, causando el efecto de eco.

LS0tDQp0aXRsZTogIkF1ZGlvX0VRVUlQTyINCmF1dGhvcjogIkZsb3IgZGVsIENhcm1lbiAtIEx1aXMgRGF2aWQiDQpkYXRlOiAiMjAyNC0wNC0yMSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiBzaW1wbGV4DQotLS0NCiFbXShDOlxcVXNlcnNcXEx1aXNEXFxEb2N1bWVudHNcXENvbmNlbnRyYWNpw7NuXFxNT0RVTE8gNFxcZWNob29vby5qcGcpICANCg0KDQojIENvbnRleHRvDQoNCkR1cmFudGUgZXN0YSBhY3RpdmlkYWQgY3JlYXJlbW9zIHVuIGF1ZGlvIGEgcGFydGlyIGRlIHRleHRvICh0ZXh0IHRvIHNwZWVjaCkgaGFjaWVuZG8gdXNvIGRlIGxhIEFQSSAiVGV4dC10by1zcGVlY2giIGRlIE9wZW5BSSwgdW5hIHZleiBvYnRlbmlkbyBlbCBhdWRpbyBoYXJlbW9zIHVzbyBkZSB1bmEgZGUgbGFzIGhlcnJhbWllbnRhcyBiw6FzaWNhcyBkZSBlZmVjdG9zIGRlIGF1ZGlvIGxhIGN1YWwgZXMgbGEgZ2VuZXJhY2nDs24gZGUgZWNvLiAgDQpFbCBlY28gZXMgZW4gc8OtIHVuYSBmb3JtYSBlbiBsYSBxdWUgc2UgcmV0cmFzYW4gbGFzIG9uZGFzIGRlIGF1ZGlvLCBlcyBkZWNpciBxdWUgc2UgbXVldmVuIHVuIHBvY28gaGFjaWEgbGEgZGVyZWNoYSBwYXJhIHF1ZSBsYXMgc2XDsWFsZXMgZGUgYXVkaW8gb2J0ZW5nYW4gZXN0ZSBjYXJhY3RlcsOtc3RpY28gImRlbGF5Ii4gIA0KDQojIEFjdGl2aWRhZA0KDQojIyBDcmVhY2nDs24gZGVsIGF1ZGlvIChQeXRob24pDQpEdXJhbnRlIGVzdGEgcHJpbWVyIGZhc2UgZGVsIHByb2Nlc28gZXMgbmVjZXNhcmlvIGNyZWFyIHVuIGF1ZGlvIG1lZGlhbnRlIGxhIEFQSSBkZSBUZXh0LXRvLXNwZWVjaCBkZSBPcGVuQUksIGEgY29udGludWFjacOzbiBzZSBtdWVzdHJhIGVsIGPDs2RpZ28gY3JlYWRvIGVuIHB5dGhvbjogIA0KDQohW10oQzpcXFVzZXJzXFxMdWlzRFxcRG9jdW1lbnRzXFxDb25jZW50cmFjacOzblxcTU9EVUxPIDRcXHB5LmpwZykNCg0KVW5hIHZleiBleHRyYWlkbyBlbCBhdWRpbywgcHJvY2VkZW1vcyBhIHJlYWxpemFyIGxhcyBtb2RpZmljYWNpb25lcyBuZWNlc2FyaWFzIGVuIFIuLi4gDQoNCiMjIE1vZGlmaWNhY2nDs24gZGVsIGF1ZGlvIChSKQ0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShzaWduYWwpDQpsaWJyYXJ5KGF1ZGlvKQ0KbGlicmFyeSh0dW5lUikNCmBgYA0KDQpQaXJtZXJvIGRlYmVtb3MgaW1wb3J0YXIgZWwgYXVkaW8gZ2VuZXJhZG8gY29uIEFJIHkgbG8gb2NudmVydGltb3MgZW4gdW4gZm9ybWF0byBxdWUgcG9kYW1vcyBtYW5pcHVsYXINCmBgYHtyfQ0KZmlsZV9wYXRoIDwtICJzcGVlY2hfZXF1aXBvLm1wMyINCmF1ZGlvX2RhdGEgPC0gcmVhZE1QMyhmaWxlX3BhdGgpDQoNCnkgPC0gYXVkaW9fZGF0YUBsZWZ0DQpGcyA8LSBhdWRpb19kYXRhQHNhbXAucmF0ZQ0KYGBgDQohW10oQzpcXFVzZXJzXFxMdWlzRFxcRG9jdW1lbnRzXFxDb25jZW50cmFjacOzblxcTU9EVUxPIDRcXHNwZWVjaF9lcXVpcG8ubXAzKQ0KDQoNCkEgY29udGludWFjacOzbiBlc3RhYmxlY2Vtb3MgbG9zIHBhcsOhbWV0cm9zIGRlbCBlY28geSBsbyBnZW5lcmFtb3MsIGVuIGVzdGUgY2FzbyBjb24gMC4yNSBzZWd1bmRvcyBkZSBkZWxheSB5IHByb2NlZGVtb3MgYSBnZW5lcmFybyBjb24gbGFzIGZ1bmNpb25lcw0KYGBge3J9DQphbHBoYSA8LSAwLjkNCkQgPC0gMC4yNSAqIEZzICANCg0KZWNobyA8LSBudW1lcmljKGxlbmd0aCh5KSArIEQpDQplY2hvWzE6bGVuZ3RoKHkpXSA8LSB5DQplY2hvWyhEKzEpOihEK2xlbmd0aCh5KSldIDwtIGFscGhhICogeQ0KYGBgDQoNCkZpbmFsbWVudGUgc3VtYW1vcyBlbCBhdWRpbyBvcmlnaW5hbCB5IGVsIGVjbyBxdWUgY3JlYW1vcyB5IGd1YXJkYW9tcyBlbCByZXN1bHRhZG8gY29tbyB1biBudWV2byBhdWRpbw0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnggPC0geSArIGVjaG9bMTpsZW5ndGgoeSldDQoNCm5ld19hdWRpbyA8LSBXYXZlKHgsIHNhbXAucmF0ZSA9IEZzKQ0KDQojb3V0cHV0X2ZpbGUgPC0gInNwZWVjaF9lcXVpcG9fd2l0aF9lY2hvMS53YXYiDQojd3JpdGVXYXZlKG5ld19hdWRpbywgZmlsZW5hbWUgPSBvdXRwdXRfZmlsZSkNCmBgYA0KDQohW10oQzpcXFVzZXJzXFxMdWlzRFxcRG9jdW1lbnRzXFxDb25jZW50cmFjacOzblxcTU9EVUxPIDRcXHNwZWVjaF9lcXVpcG9fd2l0aF9lY2hvMS53YXYpDQoNCkVzIGFzw60gY29tbyBjb25jbHVpbW9zIGVzdGUgcHJvY2VzbywgY29uIHVuIG51ZXZvIGF1ZGlvIHF1ZSBjb250aWVuZSBjaWVydG8gZGVsYXkgZW4gc3VzIG9uZGFzLCBjYXVzYW5kbyBlbCBlZmVjdG8gZGUgZWNvLiANCg==