Python 播放录音并改变采样频率:体验音效变化
要播放录制的语音信号并将采样频率改变为原始采样频率的倍数,您可以使用'pyaudio'库的'OutputStream'功能。
首先,您需要将录制的音频数据存储在一个字节流对象中。以下是修改过的代码:
import pyaudio
import wave
import numpy as np
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
RECORD_SECONDS = 3
WAVE_OUTPUT_FILENAME = "C2_1_y_1.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* 录音开始")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK, exception_on_overflow=False)
frames.append(data)
print("* 录音结束")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
接下来,您可以使用以下代码读取保存的.wav文件并播放:
import pyaudio
import wave
import numpy as np
WAVE_OUTPUT_FILENAME = "C2_1_y_1.wav"
PLAYBACK_RATE_MULTIPLIER = 2 # 倍数
wf = wave.open(WAVE_OUTPUT_FILENAME, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate() * PLAYBACK_RATE_MULTIPLIER,
output=True)
data = wf.readframes(CHUNK)
while len(data) > 0:
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
通过修改'PLAYBACK_RATE_MULTIPLIER'变量,您可以将播放的采样频率设置为原始采样频率的倍数。运行上述代码将会播放录制的语音信号,并更改采样频率的倍数,以便您可以体验不同的效果。
原文地址: https://www.cveoy.top/t/topic/nBE 著作权归作者所有。请勿转载和采集!