使用 Python 录制或播放音频无法在 Mac 上运行:没有错误和没有声音

Posted

技术标签:

【中文标题】使用 Python 录制或播放音频无法在 Mac 上运行:没有错误和没有声音【英文标题】:Recording or Playing Audio with Python not working on Mac: No Errors & No Sound 【发布时间】:2019-10-17 13:02:54 【问题描述】:

我正在尝试仅使用内置麦克风和扬声器在 Mac(Catalina) 上的 Python 3.7 上使用音频。 我的问题是,对于我尝试过的任何代码,在录制时我什么都没有收到,而在播放声音时什么也没有。 我尝试了来自question 的答案:首先我尝试使用 PyAudio,如下所示:

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

这会返回一个无声文件。

然后我尝试使用 SoundDevice:

import sounddevice as sd
import matplotlib.pyplot as plt

fs = 44100                      # frames per sec
sd.default.samplerate = fs
sd.default.channels = 2

duration = 3.0                  # Aufnahmezeit
recording = sd.rec( int( duration * fs) )
print("* recording")
sd.wait()
print("* done!")

t = [ i for i in range( int( duration * fs) )]

plt.plot(t, recording, 'r-')
plt.show()

Wich 返回一个用零填充的数组:Screenshot of the Plot。 两者都没有导致任何错误或警告。

之后我尝试播放一个简单的 440 Hz 正弦波,扬声器保持沉默。

相同的代码,在我朋友的 mac 上运行没有问题。麦克风和扬声器也工作正常。在系统偏好设置中,我允许每个应用程序使用麦克风。

这个person 似乎也有类似的问题。还尝试了this code,但没有结果。 :(

我不知道还有什么办法可以解决这个问题。

【问题讨论】:

您能提供设备列表吗?可能默认设备不是您所期望的? 【参考方案1】:

失败原因和两种解决方法可以在https://www.reddit.com/r/MacOS/comments/9lwyz0/mojave_not_privacy_settings_blocking_all_mic/找到

要重置 PRAM,请按照https://thenextweb.com/lifehacks/2017/06/14/how-when-why-to-reset-the-pram-smc-on-your-mac/ 的说明进行操作

【讨论】:

以上是关于使用 Python 录制或播放音频无法在 Mac 上运行:没有错误和没有声音的主要内容,如果未能解决你的问题,请参考以下文章

iOS 无法在扬声器上播放并将音频会话设置为录制

如何在 Mac 上设置录制和播放音频。 Mac 上的 VOIP 应用程序

Python 调用pyaudio库录制以及播放wav音频文件

录制音频并保存到文档目录后无法使用 AVAudioPlayer 播放音频文件

无法播放用 naudio 录制的音频流

播放流后音频队列无法录制音频