import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
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()
# close PyAudio (7)
p.terminate()
已成功生成大小约为output.wav
的文件。881KB。然而,当我播放它时,它是空白的。
目前,我正在尝试通过我的MacBook专业版的内置麦克风录制音频。
有人能帮我一下吗?
发布于 2019-10-03 12:54:27
事实证明,这与操作系统有关。我试着在一台Ubuntu机器上执行同样的事情,它起作用了。在macOS Catalina上,它生成空白文件。
我需要更深入地研究一下macOS来找出问题所在。
发布于 2020-05-14 06:01:35
我也有同样的问题,它将工作,如果您授予终端访问您的麦克风!
如果终端没有出现在麦克风权限的系统首选项列表中,并且它没有请求权限(Mojave/Catalina上的问题),请通过以下方式打开它:
open /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
然后运行一个使用麦克风的程序。
sox -d -d
(注意:您需要安装SoX。这个特定的命令可以让你听到你的麦克风输入。你也可以使用pyaudio,FFmpeg,ecasound等)
这应该会触发它的请求。如果这不起作用,请尝试在不同的命令行上运行该命令,例如iTerm2。这是一个非常类似于Catalina上Audacity的问题和解决方案。但我不确定确切的原因是什么。
https://stackoverflow.com/questions/58211407
复制相似问题