要播放录制的语音信号并将采样频率改变为原始采样频率的倍数,您可以使用'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'变量,您可以将播放的采样频率设置为原始采样频率的倍数。运行上述代码将会播放录制的语音信号,并更改采样频率的倍数,以便您可以体验不同的效果。

Python 播放录音并改变采样频率:体验音效变化

原文地址: https://www.cveoy.top/t/topic/nBE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录