【发布时间】:2016-07-02 22:49:58
【问题描述】:
这是我的第一篇文章。是否可以在播放过程中更改播放速度?我想模拟汽车发动机的声音,为此第一步是根据发动机的 RPM 改变循环样本的速度。我知道如何通过改变波形文件的速率来提高使用 pyaudio 的完整样本的速度,但我想连续改变速率。如果不使用 scikits.samplerate 包,这可能吗?它允许重新采样(并且很旧)或超旧的 pysonic?
这是我目前拥有的:
import pygame, sys
import numpy as np
import pyaudio
import wave
from pygame.locals import *
import random as rd
import os
import time
pygame.init()
class AudioFile:
chunk = 1024
def __init__(self, file, speed):
""" Init audio stream """
self.wf = wave.open(file, 'rb')
self.speed = speed
self.p = pyaudio.PyAudio()
self.stream = self.p.open(
format = self.p.get_format_from_width(self.wf.getsampwidth()),
channels = 1,
rate = speed,
output = True)
def play(self):
""" Play entire file """
data = self.wf.readframes(self.chunk)
while data != '':
self.stream.write(data)
def close(self):
""" Graceful shutdown """
self.stream.close()
self.p.terminate()
a = AudioFile("wave.wav")
a.play()
【问题讨论】:
-
是的,有可能,你不管什么时候改变你的音高都变了?
标签: python audio audio-processing pitch