Python: изменить высоту звука аудиофайла

это мой первый пост в стеке.Пока что этот сайт был очень полезным, но я новичок и нуждаюсь в четком объяснении моей проблемы, связанной со звуком смещения высоты тона в Python. У меня установлены текущие модули: numpy, scipy, pygame и scikits "samplerate" api.

Моя цель - взять стерео файл и воспроизвести его с другой высотой звука за как можно меньше шагов. В настоящее время я загружаю файл в массив с помощью pygame.sndarray, затем применяю преобразование частоты дискретизации с помощью scikits.samplerate.resample, а затем конвертирую вывод обратно в звуковой объект для воспроизведения с помощью pygame. Проблема в том, что из моих динамиков исходит мусор. Конечно, мне не хватает нескольких шагов (помимо того, что я ничего не знаю о математике и звуке).

Спасибо.

import time, numpy, pygame.mixer, pygame.sndarray
from scikits.samplerate import resample

pygame.mixer.init(44100,-16,2,4096)

# choose a file and make a sound object
sound_file = "tone.wav"
sound = pygame.mixer.Sound(sound_file)

# load the sound into an array
snd_array = pygame.sndarray.array(sound)

# resample. args: (target array, ratio, mode), outputs ratio * target array.
# this outputs a bunch of garbage and I don't know why.
snd_resample = resample(snd_array, 1.5, "sinc_fastest")

# take the resampled array, make it an object and stop playing after 2 seconds.
snd_out = pygame.sndarray.make_sound(snd_resample)
snd_out.play()
time.sleep(2)
10
задан hilmers 14 December 2011 в 08:03
поделиться