gpt4 book ai didi

python - PyAudio 如何使用我电脑的麦克风?

转载 作者:行者123 更新时间:2023-11-28 18:39:48 25 4
gpt4 key购买 nike

为了录制一个 2 秒的 wav 文件,我使用了 PyAudio(带有 Pyzo)和以下经典代码来录制声音并保存它:

import pyaudio
import wave


chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "my_path//a_test_2.wav"

p = pyaudio.PyAudio()

# Création et initialisation de l'objet stream...
s = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = chunk)

print("---recording---")

d = []

print((RATE / chunk) * RECORD_SECONDS)

for i in range(0, (RATE // chunk * RECORD_SECONDS)):

data = s.read(chunk)
d.append(data)
#s.write(data, chunk)

print("---done recording---")

s.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(d))
wf.close()

然后我用它,说“aaa”。一切正常,没有错误。而当我读取wav文件时,听不到“aaa”的声音。我在 Audacity 中可视化了该文件,我可以看到一切都只是沉默 (0)。所以 Pyzo 似乎不知道我的麦克风在哪里,因为它没有使用它。我能做些什么 ?任何想法 ?或者它没有写出所有记录的数据,但我不知道为什么。

我已经检查过我的麦克风是 16 位的,速率是 44100。

最佳答案

您需要逐步完成这项工作。为确保您正在从麦克风中录音,我建议您在阅读时打印出每个 block 的最大值。然后你应该实时看到背景噪音和你说话之间的区别。例如:

import audioop

# all the setup stuff, then in your main data loop:

for i in range(0, (RATE // chunk * RECORD_SECONDS)):
data = s.read(chunk)
mx = audioop.max(data, 2)
print mx

通常背景噪音和语音之间的这种差异超过 10 倍,因此您可以很容易地看到数字飞过时的大小变化。

此外,在开始时,列出您所有的麦克风以确保您使用的是正确的 (get_device_info_by_index)。例如,您可以通过“线路输入”而非麦克风阅读。

关于python - PyAudio 如何使用我电脑的麦克风?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27710244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com