Запись выходного звука в Python
-
20-09-2019 - |
Вопрос
Я хочу программировать звук, выходящий из моего ноутбука в Python. я нашел PyAudio
и придумал следующую программу, которая выполняет задачу:
import pyaudio, wave, sys
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = sys.argv[1]
p = pyaudio.PyAudio()
channel_map = (0, 1)
stream_info = pyaudio.PaMacCoreStreamInfo(
flags = pyaudio.PaMacCoreStreamInfo.paMacCorePlayNice,
channel_map = channel_map)
stream = p.open(format = FORMAT,
rate = RATE,
input = True,
input_host_api_specific_stream_info = stream_info,
channels = CHANNELS)
all = []
for i in range(0, RATE / chunk * RECORD_SECONDS):
data = stream.read(chunk)
all.append(data)
stream.close()
p.terminate()
data = ''.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()
Проблема в том, что я должен подключить разъем для наушников к разъему микрофона. Я попытался заменить эти строки:
input = True,
input_host_api_specific_stream_info = stream_info,
с этими:
output = True,
output_host_api_specific_stream_info = stream_info,
Но тогда я получаю эту ошибку:
Traceback (последний звонок в последний раз):
Файл "./test.py", строка 25, в
data = Stream.read (Chunk)
Файл "/library/python/2.5/site-packages/pyaudio.py", строка 562, в чтении
pacannotreadfromanoutputonlystream)
Ioerror: [errno не входной поток] -9975
Есть ли способ создать экземпляр потока Pyaudio, чтобы он вводился с вывода компьютера, и мне не нужно подключать разъем для наушников к микрофону? Есть ли лучший способ сделать это? Я бы предпочел придерживаться приложения Python и избегать какао.
Решение
Вы можете установить Звуковой светильник, что позволяет вам создавать дополнительные аудиоустройства и маршрутизировать аудио между ними. Таким образом, вы можете определить вывод вашей системы на устройстве Soundflower и прочитать из нее звук с помощью Pyaudio.
Другие советы
К сожалению, нет надежного способа сделать это, но Аудио угон а также Прослушивание являются лучшими инструментами, доступными для этого.
Я могу дать ответ, не используя программный способ. Панель> Звук> Запись >> Включение стерео микса. Это нуждается в поддержке водителя. Я также обнаружил, что это делает мой настоящий звук эхо. По крайней мере, это решает мою проблему.