Как избежать превращения Pygame женского голоса в мужской - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь воспроизвести аудиофайл женщины, говорящей на хинди, используя библиотеку pygame в python. Когда я вручную нажимаю на аудиофайл и слушаю его, это женский голос, но когда я проигрываю его по сценарию ниже, я получаю мужской голос. Я предполагаю, что это преобразование женской частоты в мужскую. Почему это так и как этого избежать?

Примечание: я использую Raspbian на Raspberry Pi.

Это ссылка на аудиофайл: https://drive.google.com/open?id=18pLBoCMxWZzB-RO3qqVmi0zREgJckb3M

Моя кодировка:

import pygame.time
from pygame.mixer import *
pre_init()
init()
filename = 'speech.wav'
music.load(filename)
music.play()
while pygame.mixer.music.get_busy():
    pygame.time.Clock().tick(10)

1 Ответ

0 голосов
/ 20 января 2019
import pygame.time
from pygame.mixer import *
pre_init()
init(frequency=32000)
filename = 'speech.wav'
music.load(filename)
music.play()
while pygame.mixer.music.get_busy():
    pygame.time.Clock().tick(10)

pygame.mixer.init() принимает параметр частота . А поскольку проигрыватель по умолчанию 22050, воспроизведение будет замедленным, что будет звучать по-другому. Вы можете обойти это, изменив скорость вручную, или вы можете получить фактическую скорость из music.load(), метаданные должны быть в файле.

В противном случае просто наберите ffmpeg -i speech.wav, и вы увидите правильную частоту внизу.

Чтобы изменить частоту аудио-файлов на одинаковую частоту, вы можете использовать ffmpeg для перекодирования файлов. Теперь, я не волшебник с ffmpeg - но просто что-то вроде:

ffmpeg -i speech.wav -af asetrate="32000*1.38125,atempo=1/1.38125" output.wav

Или используйте Audacity или что-то, что другие рекомендуют: https://superuser.com/questions/292833/how-to-change-audio-frequency

Второй вариант изменить частоту на плеере - это вызвать pygame.mixer.quit() после каждого мультимедийного файла и повторно запустить его с новой частотой, соответствующей вашему новому файлу. Или, наконец, прочитайте документы и посмотрите, возможно ли изменить частоту воспроизведения на уже инициализированном экземпляре микшера. Это за пределами моего знания, хотя. Я просто знаю, какова ваша изначальная корневая проблема:)

...