velocidad de reproducción de audio de pygame

pregunta rápida.

Estoy ejecutando pygame bajo Linux solo para reproducir algunos archivos de audio. Tengo algunos archivos .wav y tengo problemas para reproducirlos a la velocidad correcta.

import pygame.mixer, sys, time #plays too fast pygame.mixer.init(44100) pygame.mixer.music.load(sys.argv[1]) pygame.mixer.music.play() time.sleep(5) pygame.mixer.quit() #plays too slow pygame.mixer.init(22100) pygame.mixer.music.load(sys.argv[1]) pygame.mixer.music.play() time.sleep(5) pygame.mixer.quit() 

He buscado en ggogle code, pero parece que todo el mundo está bien llamando a la función init con sus parámetros predeterminados. ¿Pueden otros intentar ejecutar este script y ver si tienen el mismo comportamiento o no? ¿Alguien sabe cómo acelerarlo? ¿O ajustar la velocidad para cada archivo?

Gracias.

Abra su archivo de audio en una herramienta de audio gratuita como Audacity . Le dirá la tasa de muestreo de sus medios de comunicación. También le permitirá convertir a una frecuencia de muestreo diferente para que todos sus sonidos puedan ser iguales.

Tuve algunas pistas de audio mp3 que se reprodujeron ralentizadas. Actualicé la frecuencia del mezclador para basarme en la frecuencia de muestreo de mp3 usando un mutágeno como el siguiente:

 import pygame, mutagen.mp3 song_file = "your_music.mp3" mp3 = mutagen.mp3.MP3(song_file) pygame.mixer.init(frequency=mp3.info.sample_rate) pygame.mixer.music.load(song_file) pygame.mixer.music.play() 

Y solucionó el problema.

Lo descubrí … Hay un módulo de onda http://docs.python.org/library/wave.html y puede leer la frecuencia de muestreo de los archivos wav.

Para mejorar la respuesta de Chris H. Aquí hay un ejemplo de cómo usar la biblioteca de wave .

 import wave import pygame file_path = '/path/to/sound.wav' file_wav = wave.open(file_path) frequency = file_wav.getframerate() pygame.mixer.init(frequency=frequency) pygame.mixer.music.load(file_path) pygame.mixer.music.play() 

Recuerde que si desea cambiar la frequency o cualquier otro parámetro utilizado en pygame.mixer.init , debe llamar a pygame.mixer.quit primero. Documentación de pygame