Mezclar dos archivos de audio WAV

13/05/2010 - 18:18 por HARE | Informe spam
Hola a tod@s!

Os escribo ya desesperado a ver si alguien puede arrojarme algo de luz
porque por mas que busco no encuentro lo que necesito y no se como
hacerlo, os cuento.

Tengo una aplicacion que se conecta con el skype, y detecta cuando el
usuario hace o recibe una llamada, skype proporciona una libreria que
te permite grabar las llamadas, el problema es que las graba por
separado, en un archivo wav almacena la voz del que llama y en otro
wav la voz del que recibe la llamada. Lo que yo quisiera poder hacer
es coger esos dos ficheros wav y juntarlos en uno solo para poder
escuchar la llamada.

¿Alguien tiene idea de como podria hacer eso? Lo unico que he
conseguido ha sido crear un fichero nuevo con las voces una detras de
la otra, pero no mezcladas.

Espero que se me entienda y lo que es mejor, que alguien sepa como
hacerlo :-)

Un saludo!
Miguel.

Preguntas similare

Leer las respuestas

#11 langosta
15/05/2010 - 15:10 | Informe spam
"HARE" escribió en el mensaje de noticias
news:

[...]
Muchas gracias Langosta!, por fin lo he conseguido, hace dos dias me
parecia algo casi imposible, pero con tu ayuda lo he solucionado. He
tenido que modificar la cabecera del fichero resultante, para ello me
ha venido muy bien está página:
https://ccrma.stanford.edu/courses/...aveFormat/
que esplican al detalle como esta formada la cabecera de los archvivos
WAV. He tenido que modificar el ChunkSize, el NumChannels, el ByteRate
y el BlockAlign, y listo.

Luego en la data no me ha hecho falta sumar los samples, de hecho, si
los sumaba se me generaba un fichero muy muy grande que no funcionaba.
Lo que he hecho ha sido lo que planteabas que sería tu primer intento,
leer un integer de cada fichero e ir escribiendolos en el fichero
nuevo y ha funcionado a la perfección.

Mil gracias!!!!

Un saludo,
Miguel.


Hmmmm, me alegro, pero no entendí el último párrafo.

Si mezclas los samples (fijate que uso el operador de división entre
enteros)

sampleC = sampleA \ 2 + sampleB \ 2

el resultado será un archivo idéntico en tamaño y formato, a los otros
dos.
Respuesta Responder a este mensaje
#12 HARE
15/05/2010 - 17:10 | Informe spam
On 15 mayo, 15:10, "langosta" wrote:

Hmmmm, me alegro, pero no entendí el último párrafo.

Si mezclas los samples (fijate que uso el operador de división entre
enteros)

sampleC = sampleA \ 2 + sampleB \ 2

el resultado será un archivo idéntico en tamaño y formato, a los otros
dos.



Al final, la data del fichero resultante la genero asi:
While Not EOF(1) And Not EOF(2)
Get #1, , RintSample
Put #3, , RintSample
Get #2, , RintSample
Put #3, , RintSample
Wend

De verdad que lo primero que hice fue probar sumando como me dijiste,
pero se me generaba un fichero de tamaño de casi 10MB, cuando los
ficheros tienen un peso de 1.5MB, es posible que algo estuviera
haciendo algo mal con las cabeceras pero nose..lo bueno es que
ahora ya me funciona de la otra manera :-)

Un saludo!
Respuesta Responder a este mensaje
#13 HARE
17/05/2010 - 18:46 | Informe spam
On 15 mayo, 15:10, "langosta" wrote:
>
Hmmmm, me alegro, pero no entendí el último párrafo.

Si mezclas los samples (fijate que uso el operador de división entre
enteros)

sampleC = sampleA \ 2 + sampleB \ 2

el resultado será un archivo idéntico en tamaño y formato, a los otros
dos.



Cuanta razon tienes, de la manera que lo estaba haciendo se me
generaba un fichero en estereo cuyo tamaño era la suma de los otros
dos. Haciendolo como tu dices, vuelvo a modificar el numero de canales
para dejarlo en 1, cambio el ByteRate y el BlockAlign y el resultado
es un fichero en mono cuyo tamaño es como bien decias el mismo que los
otros dos.

En resumen, Langosta eres un crack! esta solucion me gusta bastante
mas, no solo porque pesa menos sino porque cuando escuchas el fichero
resultante suenan por los dos altavoces las dos voces, de la otra
manera parecia un partido de tenis, mirando de un altavoz a otro :-)

Gracias!
Respuesta Responder a este mensaje
#14 langosta
18/05/2010 - 14:45 | Informe spam
"HARE" escribió en el mensaje de noticias
news:

[...]
Haciendolo como tu dices, vuelvo a modificar el numero de canales
para dejarlo en 1, cambio el ByteRate y el BlockAlign y el resultado
es un fichero en mono cuyo tamaño es como bien decias el mismo que los
otros dos.



Si el formato y el tamaño de la data son idénticos en ambos archivos,
entonces puedes copiar el comienzo de cualquiera de ellos (hasta el
primer sample), al archivo de destino sin necesidad de parseo. Lo copias
tal cual y ya.

[...]
esta solucion me gusta bastante
mas, no solo porque pesa menos sino porque cuando escuchas el fichero
resultante suenan por los dos altavoces las dos voces, de la otra
manera parecia un partido de tenis, mirando de un altavoz a otro :-)



Ja!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida