Запись динамиков с помощью PyAudio

Я пытаюсь записать вывод из своих динамиков компьютера с помощью PyAudio. Я попытался изменить пример кода, приведенный в документации 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() 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() 

Может ли кто-нибудь помочь мне, пожалуйста?

2 Solutions collect form web for “Запись динамиков с помощью PyAudio”

Если кто-то все еще спотыкается над этим, как я, я нашел вилку PyAudio для записи вывода на окна. https://github.com/intxcc/pyaudio_portaudio

Объяснение:

Официальная сборка PyAudio не может записать результат. НО с Windows Vista и выше был введен новый API, WASAPI, который включает возможность открытия потока на выходное устройство в режиме loopback. В этом режиме поток будет вести себя как входной поток, с возможностью записи исходящего аудиопотока.

Чтобы установить режим, нужно установить специальный флаг (AUDCLNT_STREAMFLAGS_LOOPBACK, https://msdn.microsoft.com/de-de/library/windows/desktop/dd316551(v=vs.85).aspx ). Поскольку этот флаг не поддерживается в официальной сборке, необходимо отредактировать PortAudio, а также PyAudio, чтобы добавить поддержку loopback.

Новая опция: «as_loopback» 🙁 true | false)

Вы не можете записывать из выходного потока, как если бы он был введен. Для записи вам необходимо подключить PyAudio к устройству ввода , например, к микрофону. По крайней мере, это нормальный способ сделать что-то.

Сначала попробуйте подключиться к микрофону и посмотрите, получаете ли вы что-нибудь. Если это сработает, попробуйте сделать что-то необычное.

Как небольшое ускорение для ваших итераций, а не запись и просмотр файла, часто проще просто распечатать max для нескольких кусков, чтобы убедиться, что вы вводите данные. Обычно просто просматривая прокрутку чисел и сравнивая их со звуком, вы быстро оцениваете, правильно ли они связаны.

 import audioop mx = audioop.max(data, 2) print mx 
Interesting Posts

Смесь экспертов – Поезд лучшей модели только на каждой итерации

эквивалент python для sed

Как отправить файл через Soap в python?

Любая причина НЕ всегда использовать аргументы ключевого слова?

как пропустить аргумент в python при вызове метода

Как перебирать список списков в python?

Точка тестирования с в / из векторного шейп-файла

Есть ли простой способ запросить URL-адрес в python и НЕ следовать переадресации?

Как я могу ответить на запрос метода CONNECT на прокси-сервере, используя сокет в python?

Код Python, чтобы определить, существует ли TLD, запросить еще раз, если нет?

Разбить список на части на основе набора индексов в Python

Есть ли причины не использовать упорядоченный словарь?

как извлечь элемент серии pandas и сравнить его с строками в столбце dataframe

pandas: Как разделить текст в столбце на несколько строк?

Эффективно рассчитывать частоты слов в python

Python - лучший язык программирования в мире.