gpt4 book ai didi

python - 使用 PyAudio 录制扬声器输出

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:05 26 4
gpt4 key购买 nike

我正在尝试使用 PyAudio 录制计算机扬声器的输出。
我尝试修改PyAudio文档中给出的代码示例,但它不起作用。

从技术上来说,没有错误。我获取了文件 output.wav 并且可以打开它,但没有声音。在 Audacity 上,我只能看到一条直线。

出了什么问题?

import pyaudio
import wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

SPEAKERS = p.get_default_output_device_info()["hostApi"] #The part I have modified

stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK,
input_host_api_specific_stream_info=SPEAKERS) #The part I have modified

print("* recording")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)

print("* done recording")

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()

最佳答案

如果有人像我一样仍然被这个问题绊倒,我找到了 PyAudio fork记录 Windows 上的输出。

说明:

官方 PyAudio 版本无法记录输出。但在 Windows Vista 及更高版本中,引入了新的 API WASAPI,其中包括以环回模式打开到输出设备的流的功能。在此模式下,流的行为类似于输入流,并且能够记录传出的音频流。

要设置模式,必须设置一个特殊标志 ( AUDCLNT_STREAMFLAGS_LOOPBACK )。由于官方版本不支持此标志,因此需要编辑 PortAudio 和 PyAudio,以添加环回支持。

新选项:

"as_loopback":(true|false)

关于python - 使用 PyAudio 录制扬声器输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55541029/

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