Iniciar sesión

Ver la versión completa : Duda sobre digitalización de audio



Puck2099
27/04/2010, 14:10
Hola,

Creo entender bien cómo funciona el audio digitalizado, pero os pregunto a ver si me lo podéis confirmar.

Si tengo una señal muestreada a 11025 Hz no habría ninguna manera de "ganar calidad" teniendo una salida de 44100 Hz, ¿verdad?

Quiero decir, que no te puedes "inventar" muestras y la única forma de hacer la conversión sin distorsión sería cuatruplicando cada muestra, ¿verdad? En este caso supongo que la sensación auditiva sería la misma que con la original, ¿no?

Gracias por la ayuda.

efegea
27/04/2010, 14:13
Sí, se puede interpolar, no hace maravillas, pero sí que se puede mejorar.

Es igual que cuando interpolas los píxeles con un filtrado, bilinear por ejemplo, pues exactamente lo mismo.

Se llama remuestrear, y hay filtros de más calidad y de menos calidad (como con los pixeles, claro)

EDIT: es evidente que se llama remuestrear xD es que no recuerdo el nombre del filtro si es que tenía algun nombre

dj syto
27/04/2010, 14:26
si ya la tienes muestreada, poco puedes hacer...

efegea
27/04/2010, 14:48
Sí se puede syto. Yo lo hacía en linux, porque la tarjeta de sonido tenía una frecuencia interna de 48Khz y todo lo que no fuera a esa frecuencia (los mp3s por ejemplo) lo remuestreaba internamente a su frecuencia interna. Pero lo hacía MUY mal, así que lo que hice fue añadir un plugin a ALSA (el sistema de sonido de linux) para que remuetreara el sonido por software con un filtro de alta calidad, y se notaba.

< - >
Un filtro "Sample Rate Converter" (SRC) creo que es lo que buscas, Puck.

Puck2099
27/04/2010, 14:58
Bueno, sabía que se podían hacer "apaños" para remuestrear (los filtros que dice efegea), pero me refería con el sonido exactamente igual, que como ha dicho Syto dudo que sea posible.

JoJo_ReloadeD
27/04/2010, 15:00
Si se puede.

Pongamos que grabamos a 8 bits a 11khz. Esto significa que cada 1/11025 segundo vamos a coger el sonido que haya en ese momento y lo vamos a codificar con un valor de 0 a 255 (8 bits unsigned en este caso). Pongamos que tenemos estas 4 muestras:

10 100 200 0

Ahora hacemos el truco, vamos a 'mejorar' el sonido pasandolo con nuestro fistro a 22050hz. Tendremos el doble de muestras, 8, y en vez de replicar las muestras anteriores, con lo que tendriamos un sonido identico, solo que ocupando el doble. En vez de eso el valor intermedio, es decir, el nuevo, lo sacamos con la media aritmetica de los valores antiguos:

10 55 100 150 200 100 0 0

Obviamente no es lo mismo que el sonido real, pero algo mejor que la muestra original es :D

efegea
27/04/2010, 15:02
Bueno, sabía que se podían hacer "apaños" para remuestrear (los filtros que dice efegea), pero me refería con el sonido exactamente igual, que como ha dicho Syto dudo que sea posible.

¿Te refieres al sonido exactamente igual al original antes de grabar, o exactamente igual al de 11Khz?

Si es lo segundo, basta con que multipliques por cuatro cada muestra, sin modificarla. Que creo que es lo que dijistes en el primer post.

dj syto
27/04/2010, 15:12
Los resultados de esos "apaños" dejan mucho que desear. Aunque faltaria saber para que quiere usar esas muestras...

kabhal
27/04/2010, 15:17
Sí se puede syto. Yo lo hacía en linux, porque la tarjeta de sonido tenía una frecuencia interna de 48Khz y todo lo que no fuera a esa frecuencia (los mp3s por ejemplo) lo remuestreaba internamente a su frecuencia interna. Pero lo hacía MUY mal, así que lo que hice fue añadir un plugin a ALSA (el sistema de sonido de linux) para que remuetreara el sonido por software con un filtro de alta calidad, y se notaba.

< - >
Un filtro "Sample Rate Converter" (SRC) creo que es lo que buscas, Puck.

Pero creo que lo hablas no es lo mismo. En tu caso remuestraria los mp3 de 44.1Khz a 48Khz. No es lo mismo que de 11Khz , sacar 48KHz. La calidad es bastante mala, por mucho que el filtro sea muy bueno.

efegea
27/04/2010, 15:19
Pero es que la calidad de 11Khz es mala, no el hecho de que el salto sea tan grande.

Es como si redimensionas una imagen de 20x20 pixels a 400x400, se va a ver mal porque el original tiene muy poca resolución. Pues en sonido igual, 11Khz es una resolución de muestras muy baja, por lo que se va a oír mal hagas lo que hagas. Como mucho puedes interpolar, que al menos los saltos entre muestra y muetra serán menos pronunciados.

nitroosistem
27/04/2010, 15:22
La interpolacion que puedas hacer siempre será inventada. Los datos reales de la forma de onda ya los has perdido al muestrear tan bajo. Así que si lo tienes a 11Khz, yo no le tocaria nada mas, si es que no quieres terminar de estropearlo;)

kabhal
27/04/2010, 15:23
Bueno, pues eso mismo. Que por mucho que exista el programa/filtro que el pide, el resultado va a ser malo porque la muestra original es de muy baja frecuencia.
Otro cosa es saber que es lo que quiere remuestrar, si es musica o solo voz, y tambien en que codec o formato está, porque por ejemplo, me acuerdo que el formato .VOC en mono a esa calidad, todavia se podian sacar cosas decentes.

nitroosistem
27/04/2010, 15:30
Bueno, pues eso mismo. Que por mucho que exista el programa/filtro que el pide, el resultado va a ser malo porque la muestra original es de muy baja frecuencia.
Otro cosa es saber que es lo que quiere remuestrar, si es musica o solo voz, y tambien en que codec o formato está, porque por ejemplo, me acuerdo que el formato .VOC en mono a esa calidad, todavia se podian sacar cosas decentes.

No lo ha dicho, pero creo que es en .mp3. Si es así, poco se puede hacer. :S

Además, como ya se ha comentado anteriormente, segun el sistema de compresion que se haya usado se habrá cargado unas frequencias u otras(en este caso me refiero a onda sonora, no de muesrteo).

Eso es algo que no le hemos preguntado. Puck, has usado un formato comprimido o sin comprimir(.wav por ejemplo)?

efegea
27/04/2010, 15:42
No se porqué me da a mí que el sonido original que dice Puck proviene directamente de un emulador :D

Puck2099
27/04/2010, 16:22
El sonido lo genera directamente la máquina a esa frecuencia, por eso no se perdería calidad al cuadruplicar las muestras.

No es que el sonido esté muestreado a baja frecuencia, sino que ya lo genera la máquina así.

Y sí, es para un emulador.

nitroosistem
27/04/2010, 16:26
El sonido lo genera directamente la máquina a esa frecuencia, por eso no se perdería calidad al cuadruplicar las muestras.

No es que el sonido esté muestreado a baja frecuencia, sino que ya lo genera la máquina así.

Y sí, es para un emulador.

Entonces representa que ese freq de muestreo es el tope de calidad. Así que no hay nada que mejorar.

Sorry! :S

Nathrezim
27/04/2010, 16:28
Entonces quizá lo mejor sería dejarlo tal y como está, no vas a tener una mejora sustancial y los filtros te van a crear un retraso en el sonido, a parte de la carga extra de CPU que vas a meter.

Drumpi
27/04/2010, 21:51
Que yo sepa, no existe un "filtro mágico" como en las películas, capaz de sacarte con total nitidez la matrícula de un coche que ocupa 10x5 pixels.
Si se ha muestreado a 11KHz se podría interpolar la información, y hay cientos de algoritmos para ello, pero ten en cuenta una cosa:
-la frecuencia máxima que se puede obtener sin fallos es la mitad de la frecuencia de muestreo, por lo que cualquier sonido superior a 5Khz e inferior a 11KHz sufre distorsión.
-todos los sonidos cuya frecuencia sea superior a 11KHz los has perdido para siempre, no se pueden recuperar porque están escondidos entre muestra y muestra. No puedes saber si entre valor y valor el sonido a vibrado una, dos o 20 veces o cómo lo ha hecho.

De todas formas, si tienes la señal en el dominio de las frecuencias, sí es posible que se pueda hacer algo, porque si se incluyen valores para 11KHz puedes obtener una calidad de sonido de 22KHz, generándolo desde las sinusoides.

dj syto
28/04/2010, 05:58
El sonido lo genera directamente la máquina a esa frecuencia, por eso no se perdería calidad al cuadruplicar las muestras.

No es que el sonido esté muestreado a baja frecuencia, sino que ya lo genera la máquina así.

Y sí, es para un emulador.

no hay nada que hacer.