Запись или воспроизведение аудио с Python, не работающим на Mac: нет ошибок и нет звука - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь работать с Audio на Python 3.7 на Mac (Catalina) только со встроенным микрофоном и динамиками. Моя проблема в том, что с любым кодом, который я пробовал, при записи я ничего не получаю, а при воспроизведении звука ничего не выходит. Я попробовал ответы на этот вопрос : сначала я попробовал с 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()

, который возвращает массив, заполненный нулями: Снимок экрана графика . И то, и другое не вызвало ошибок или предупреждений.

После этого я попытался воспроизвести простую Sin-Wave с частотой 440 Гц, динамик молчал.

Тот же код работает на моих друзейМак без проблем. Микрофон и динамики также работают нормально. А в Системных настройках я разрешил каждому приложению использовать микрофон.

Этот человек , похоже, имеет аналогичную проблему. Также пробовал этот код безрезультатно. : (

Понятия не имею, что еще я мог бы попытаться исправить.

1 Ответ

0 голосов
/ 20 октября 2019

Причину сбоя и два решения можно найти в 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...