Запись динамиков с помощью 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 
  • как преобразовать волновой файл в амплитуду поплавка
  • Python pocketsphinx RequestError: отсутствует модуль PocketSphinx: убедитесь, что PocketSphinx настроен правильно
  • Как установить PyAudio в virtualenv на Mac OS X 10.7
  • PyAudio IOError: нет устройства ввода по умолчанию
  • при установке pyaudio, pip не может найти portaudio.h в / usr / local / include
  • Geting IOError: -9981 при настройке ввода и вывода PyAudio Stream на True
  • Как удалить всплывающие подсказки из данных Concatented Sound в PyAudio
  • Преобразование многоканального файла PyAudio в массив NumPy
  •  
    Interesting Posts for Van-Lav

    Как получить stderr для команды оболочки с большим буфером данных?

    SQLAlchemy left join с использованием подзапроса

    Почему функции в Python могут печатать переменные в приложении, но не могут использовать их при назначении?

    Изменение пароля пользователя Windows с помощью python

    Регулярное выражение python: захватывает части нескольких строк, которые содержат пробелы

    Почему 08 или 09 в Python недействительны?

    SQLAlchemy + pymssql. Будут ли сырые параметризованные запросы использовать один и тот же план выполнения?

    Python: секунды с эпохи до относительной даты

    Я продолжаю получать следующую ошибку django.db.utils.ProgrammingError: столбец «имя» отношения «blog_post» уже существует в моем приложении django

    Итерация через PyMongo Cursor в качестве пары ключ-значение

    Как быстро получить сбор слов в корпусе (с nltk)?

    Сериализация JSON в Spidermonkey

    Альтернатива Python для уменьшения ()

    Django Получить всех пользователей

    многомерное t-распределение студентов с python

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