đây là bài đăng đầu tiên của tôi trên ngăn xếp. Cho đến nay trang web này đã rất hữu ích, nhưng tôi là một người mới và cần một lời giải thích rõ ràng cho vấn đề của tôi, đó là liên quan đến âm thanh pitch-shifting trong Python. Tôi đã cài đặt các mô-đun hiện tại: numpy, scipy, pygame và scikits "samplerate" api.Python: Thay đổi Pitch of Audio File
Mục tiêu của tôi là lấy tệp âm thanh nổi và phát lại ở một bước khác trong ít bước nhất có thể. Hiện tại, tôi tải tệp vào một mảng bằng pygame.sndarray, sau đó áp dụng chuyển đổi lấy mẫu bằng scikits.samplerate.resample, sau đó chuyển đầu ra trở lại đối tượng âm thanh để phát lại bằng pygame. Vấn đề là âm thanh rác xuất phát từ loa của tôi. Chắc chắn tôi đang thiếu một vài bước (ngoài việc không biết gì về toán học và âm thanh).
Cảm ơn.
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)
Ôi trời, tôi không biết cảm ơn bạn như thế nào. Không chờ đợi, tôi làm, tôi có thể gửi cho bạn tiền bia qua PayPal nếu bạn chấp nhận đề nghị của tôi. Tôi đã vô số giờ tìm kiếm một giải pháp. Cái này thật tuyệt. – hilmers
Vui mừng khi thấy bạn thích phản ứng của tôi :) Bạn không cần phải cung cấp cho tôi bất cứ điều gì, câu hỏi của bạn là thú vị và tôi cũng đã học được một vài điều với nó! – kasyc
Có thể lưu đối tượng pygame.micer.Sound đã sửa đổi thành tệp âm thanh thay vì phát không? –