2008-09-12 17 views
11

Estoy trabajando en una aplicación para estudiantes de música de la universidad. Una característica que estoy considerando es ralentizar la reproducción de música sin cambiar su tono. He visto esto hecho en un software comercial, pero no puedo encontrar ninguna biblioteca o aplicaciones de código abierto que hagan algo como esto.¿Disminuye la velocidad de reproducción de un archivo de audio sin cambiar su tono?

  1. ¿Hay bibliotecas por ahí?
  2. ¿Cómo podría hacerse esto desde cero desde varios formatos de archivo?

Nota: Estoy trabajando en Java pero no estoy en contra de los cambios de idioma.

Respuesta

10

Timestretching es bastante difícil. Cuanto más ralentice o acelere el sonido, más artefactos obtendrá. Si quieres saber cómo suenan, escucha "The Rockafeller Skank" de Fat Boy Slim. Hay muchas maneras de hacerlo que tienen sus propias fortalezas y debilidades. Las matemáticas pueden ser realmente complejas. Es por eso que hay tantos algoritmos propietarios.

Esta página explica las cosas un poco más claras que yo y enlaces a la biblioteca de Dirac. http://www.dspdimension.com/admin/time-pitch-overview/

He encontrado este enlace para obtener el código de Java que hacer cambio de tono/Timestretching http://www.adetorres.com/keychanger/KeyChangerReadme.html

+0

"Funk Soul Brother" es, por supuesto, "The Rockafeller Skank";) http://en.wikipedia.org/wiki/The_Rockafeller_Skank – moobaa

+1

@moobaa: DOH .. estúpido de mi .. arreglaron! Espero que nadie lo haya notado :-) – Mendelt

4

uso soundstretch para acelerar los podcasts, que funciona bastante bien, no lo he probado en la música aunque ugh.

2

Una forma de hacerlo sería duplicar la velocidad de muestreo sin cambiar la frecuencia de muestreo de su fuente. (Ejemplo de baja calidad, pero fácil de implementar. Nota: también puede disminuir la velocidad de muestreo).

Echa un vistazo a cualquier matemática relacionada con los vocoders de fase.

Otro método común es crear una matriz de contenedores fft que almacenan datos para intervalos programados de su sonido. Luego puede elegir qué tan rápido iterar a través de los contenedores, y puede volver a sintetizar los datos de audio durante el tiempo que elija, lo que le permite estirar un segmento corto de su sonido durante el tiempo que desee.

+0

Estoy bastante seguro de que la primera idea solo reducirá la calidad al mismo tiempo que dejará la velocidad de reproducción en el mismo – Jiaaro

+0

de acuerdo y notado. –

1

audacity lo saca de la caja y es gratis. También hay varios complementos para reproductores de mp3 que son gratuitos. Aparentemente es bastante fácil de hacer con un mp3 ya que ya está codificado en el dominio de la frecuencia.

Cuestiones relacionadas