Когда я использую pygame для воспроизведения mp3-файлов, они воспроизводятся слишком быстро.
Конечно, я оглянулся и нашел ту же проблему здесь . Но, к сожалению, решение не сработало. Я знаю, что mp3-файлы кодируются с частотой 16000 Гц, и я проверил это с помощью мутагена. Но указание частоты не помогло, и фактически изменение частоты не изменило скорость воспроизведения .
Я также нашел этот ответ , который фактически предложил другой метод инициализации. Но это не сработало и для меня.
Я запускаю скрипт Python от имени root и использую звуковую карту USB. Я отредактировал свой файл конфигурации alsa в соответствии с этим ответом , чтобы установить его в качестве аудио выхода по умолчанию для root. Затем я использую этот код (или варианты согласно приведенным выше SO ответам):
pygame.mixer.init(frequency=16000)
pygame.mixer.music.load('myfile.mp3')
pygame.mixer.music.play()
Он всегда воспроизводится с удвоенной скоростью, даже когда я использую разные значения для частоты.
~~~~~
Вот код более подробно:
import boto3
from io import StringIO
import json
import os.path
from contextlib import closing
from time import sleep
import pygame
pygame.mixer.pre_init(16000, -16, 2, 2048)
pygame.init()
#pygame.mixer.init(frequency=16000)
#pygame.mixer.quit()
#pygame.mixer.pre_init(16384, -16, 2, 1024*3)
#pygame.mixer.init()
def play_file(filename):
pygame.mixer.music.load(filename)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
sleep(0.1)
play_file('myfile.mp3')