CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORED_SECONDS = 0.5 TERMINATE = False def run(self): p = pyaudio.PyAudio() while True: try: self.sock.connect(self.ADDR) break except: time.sleep(3) continue print('音频客户端已经连接...') self.stream = self.p.open(format = FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) while self.stream.is_active(): frames = [] for i in range(0,int(RATE / CHUNK * RECORED_SECONDS)): data = self.stream.read(CHUNK) frames.append(data) # 将音频数据转换为PyDub的音频片段 audio_segment = AudioSegment( data=b''.join(frames), sample_width=p.get_sample_size(FORMAT), frame_rate=RATE, channels=CHANNELS ) # 变声 audio_segment = audio_segment.speedup( playback_speed=SPEEDUP_FACTOR, chunk_size=CHUNK, crossfade=10 修改上述代码,实现变音功能
时间: 2024-01-01 22:06:32 浏览: 326
要实现变音功能,可以使用 PyDub 库中的 `pitch_shift` 方法。在上述代码中,可以在 `audio_segment` 变量上调用该方法,例如:
```
# 变声
audio_segment = audio_segment.speedup(
playback_speed=SPEEDUP_FACTOR,
chunk_size=CHUNK,
crossfade=10
)
# 变音
audio_segment = audio_segment.pitch_shift(
semitones=SHIFT_SEMITONES
)
```
其中,`SHIFT_SEMITONES` 是需要变化的半音数,可以是正数或负数,例如 `SHIFT_SEMITONES = 2` 表示将音高升高两个半音。
相关问题
CHUNK = 1024FORMAT = pyaudio.paInt16CHANNELS = 1RATE = 16000RECORD_SECONDS = 5WAVE_OUTPUT_FILENAME = "myRecording.wav"
这是一段使用Python的Pyaudio库录音的代码片段,其中定义了一些常量和变量:
- `CHUNK`:每次读取音频数据的块大小,这里是1024个字节。
- `FORMAT`:音频数据的采样格式,这里使用了16位整型。
- `CHANNELS`:音频数据的声道数,这里是单声道。
- `RATE`:音频数据的采样率,这里是16000Hz。
- `RECORD_SECONDS`:录音时长,这里是5秒。
- `WAVE_OUTPUT_FILENAME`:保存录音结果的文件名,这里是"myRecording.wav"。
根据需要,你可以根据自己的实际情况修改这些参数。
def rec(): dir_name = 'D:/pythonProject/ExtraSemester6/' CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 14400 RECORD_SECONDS = 3.5 file_name = "123.wav"
这是一个名为rec()的函数,用于录制音频。函数中定义了一些变量,如dir_name(用于存储音频文件的目录路径)、CHUNK(缓冲区大小)、FORMAT(音频格式)、CHANNELS(声道数)、RATE(采样率)和RECORD_SECONDS(录制时长)。还定义了一个file_name变量,用于指定录制的音频文件名为"123.wav"。
阅读全文