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

#6 Waldo
14/05/2010 - 15:23 | Informe spam
Hola, alguna vez use una libreria muy Buena y FREE, para trabajar con audio.

BASS.DLL

http://www.un4seen.com/

No se si hara lo que necesitas, pero dale un vistazo que es muy completa.

Saludos

Waldo
Respuesta Responder a este mensaje
#7 langosta
14/05/2010 - 15:39 | Informe spam
"HARE" escribió en el mensaje de noticias
news:
On 13 mayo, 18:29, "langosta" wrote:
Si es mono, podrías hacer un stereo con la data de cada archivo en
cada
canal. Piola.



Antes que nada gracias por contestar Langosta.

Te cuento que los archivos que genero tienen este formato:
256Kbps, 16bit mono a 16KHz

Tal y como lo planteas, unir los dos canales mono y hacer un stereo
suena como muy facil, pero si te soy sincero no se ni por donde
empezar, podrias echarme un cable?, tengo que usar las funciones mmio*
de las que hablabas antes?

Gracias por tu ayuda,

Un saludo!
Miguel


==
Si vos abrís un wav, vas a encontrar por ahí arriba la palabra "data"
segida de un long que te dice la longitud en bytes de la data. Y a
continuación la data.

Mi primer intento sería ir leyendo un sample (un integer) de data de
cada archivo e ir copiandolo en el archivo de destino. Vas intercalando
sample a sample la data de uno y de otro. En este caso deberías
modificar la información del formato ("fmt " un poco antes) y el tamaño
del archivo, ya que se va a duplicar.

Aunque, para empezar podrías intentar lo siguiente:

Tomas uno de los archivos, lees hasta antes del primer sample, osea
incluyendo el long que sigue a la palabra "data" y copias esa
información tal cual en el archivo de destino (el que tendrá la mezcla).
Luego te posicionas en el primer sample de tu segundo archivo, y
comienzas a leer un integer del archivo A y un integer del archivo B,
los sumas (deberías ser capaz de obviar el overflow, de lo contrario
deberías dividir por 2 ambos integers antes de sumarlos, lo que es una
pérdida de tiempo) , y el resultado lo escribes en el archivo de destino
(ojo, el resultado debe ser un integer: 16 bits con signo).

En este último caso el archivo tendrá el mismo tamaño y formato que los
originales (estoy adumiendo que ambos archivos son iguales en tamaño).
O sea, también será mono.
Respuesta Responder a este mensaje
#8 HARE
14/05/2010 - 22:25 | Informe spam
On 14 mayo, 15:23, "Waldo" <[waldodj2000] a r r o b a [yahoo Punto com
Punto ar]> wrote:
Hola, alguna vez use una libreria muy Buena y FREE, para trabajar con audio.

BASS.DLL

http://www.un4seen.com/

No se si hara lo que necesitas, pero dale un vistazo que es muy completa.

Saludos

Waldo



Gracias Waldo, le echaré un vistazo!
Respuesta Responder a este mensaje
#9 HARE
14/05/2010 - 22:34 | Informe spam
On 14 mayo, 15:39, "langosta" wrote:
"HARE" escribió en el mensaje de noticiasnews:
On 13 mayo, 18:29, "langosta" wrote:

> Si es mono, podrías hacer un stereo con la data de cada archivo en
> cada
> canal. Piola.

Antes que nada gracias por contestar Langosta.

Te cuento que los archivos que genero tienen este formato:
256Kbps, 16bit mono a 16KHz

Tal y como lo planteas, unir los dos canales mono y hacer un stereo
suena como muy facil, pero si te soy sincero no se ni por donde
empezar, podrias echarme un cable?, tengo que usar las funciones mmio*
de las que hablabas antes?

Gracias por tu ayuda,

Un saludo!
Miguel

==>
Si vos abrís un wav, vas a encontrar por ahí arriba la palabra "data"
segida de un long que te dice la longitud en bytes de la data. Y a
continuación la data.

Mi primer intento sería ir leyendo un sample (un integer) de data de
cada archivo e ir copiandolo en el archivo de destino. Vas intercalando
sample a sample la data de uno y de otro. En este caso deberías
modificar la información del formato ("fmt " un poco antes) y el tamaño
del archivo, ya que se va a duplicar.

Aunque, para empezar podrías intentar lo siguiente:

Tomas uno de los archivos, lees hasta antes del primer sample, osea
incluyendo el long que sigue a la palabra "data" y copias esa
información tal cual en el archivo de destino (el que tendrá la mezcla).
Luego te posicionas en el primer sample de tu segundo archivo, y
comienzas a leer un integer del archivo A y un integer del archivo B,
los sumas (deberías ser capaz de obviar el overflow, de lo contrario
deberías dividir por 2 ambos integers antes de sumarlos, lo que es una
pérdida de tiempo) , y el resultado lo escribes en el archivo de destino
(ojo, el resultado debe ser un integer: 16 bits con signo).

En este último caso el archivo tendrá el mismo tamaño y formato que los
originales (estoy adumiendo que ambos archivos son iguales en tamaño).
O sea, también será mono.



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.
Respuesta Responder a este mensaje
#10 Waldo
14/05/2010 - 22:45 | Informe spam
Que Bueno !!!
Me alegro que haya salido
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida