Как записать вывод динамика в файловое звуковое устройство

Есть ли способ, которым я могу использовать звуковое устройство библиотеки python для записи вывода через мои динамики в файл? Например, если бы я воспроизвел какие-либо звуки через свой компьютер, они были бы записаны в файл mp4/wav.


person TheFluffDragon9    schedule 26.06.2020    source источник
comment
Это не; В этом вопросе они пытаются писать тоны на основе частот и амплитуд. В моем вопросе я хотел бы записать любые звуки, которые издает мой компьютер, и записать их в файл. Например, если бы я воспроизвел песню, она была бы записана в файл. Я понимаю, что я не лучший в формулировках вопросов. Спасибо за столь быстрый ответ @EnoGerguri   -  person TheFluffDragon9    schedule 26.06.2020


Ответы (2)


Это решение: (см. комментарии)

import sounddevice as sd
from scipy.io.wavfile import write

fs = 44100  # Sample rate
seconds = 3  # Duration of recording
sd.default.device = 'digital output'  # Speakers full name here

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)
sd.wait()  # Wait until recording is finished
write('output.wav', fs, myrecording)  # Save as WAV file 

Приведенный выше код взят из: https://realpython.com/playing-and-recording-sound-python/#python-sounddevice_1, который представляет собой полное руководство по звуку в python и тому, как записывать и воспроизводить звук.

person Eno Gerguri    schedule 26.06.2020
comment
Это помогает при записи в файл wav, но записывает звук через мой микрофон вместо звуков, издаваемых моим компьютером, как если бы я воспроизводил на нем видео; звук, который будет исходить из моих динамиков. - person TheFluffDragon9; 26.06.2020
comment
@ TheFluffDragon9 Я отредактировал свой ответ, чтобы изменить устройство ввода на ваш динамик. Если это не сработает, я удалю свой ответ. - person Eno Gerguri; 26.06.2020
comment
Как узнать полное имя спикера? Есть ли способ распечатать список dveice или что-то в этом роде? Спасибо за всю твою помощь! Кстати, точка после 'digital output' должна быть там? - person TheFluffDragon9; 26.06.2020
comment
@TheFluffDragon9 TheFluffDragon9, если вы используете Windows, вы можете перейти к настройкам звука и увидеть имя устройства вывода, которое вы хотите ввести. - person Eno Gerguri; 26.06.2020
comment
Извините, что продолжаю задавать вопросы, но я просто хочу, чтобы это было правильно. Если мои настройки звука говорят это, и мне нужны нижние динамики, как выглядит моя строка кода? - person TheFluffDragon9; 26.06.2020
comment
@TheFluffDragon9 sd.default.device = 'Intel SST Audio Device (WDM)' вам также следует попробовать динамики. - person Eno Gerguri; 26.06.2020
comment
Когда я использую эту строку, она говорит: ValueError: Multiple input devices found for 'Intel SST Audio Device (WDM)': [6] Microphone (Intel SST Audio Device (WDM)), Windows DirectSound [12] Microphone (Intel SST Audio Device (WDM)), Windows WASAPI - person TheFluffDragon9; 26.06.2020
comment
Это оба микрофонных устройства; Я начинаю думать, что невозможно записать с устройства вывода - person TheFluffDragon9; 26.06.2020
comment
Удалите тот, который вы не используете, не волнуйтесь, он автоматически переустановится, когда вы снова подключите его. (Я думаю) - person Eno Gerguri; 26.06.2020
comment
Однако речь идет о двух микрофонах, связанных с компьютером, а не о двух динамиках на изображении. Я отключил динамики, и ошибка все та же. - person TheFluffDragon9; 26.06.2020
comment
Это потому, что оба динамика на изображении имеют одинаковое имя. - person Eno Gerguri; 26.06.2020
comment
Я знаю, но я удалил один из них, и ошибка та же, потому что речь идет о микрофонах Intel SST Audio Device (WDM), а не о динамиках. - person TheFluffDragon9; 26.06.2020
comment
На изображении он имеет название Speakers - person Eno Gerguri; 26.06.2020
comment
Да, но я думаю, что речь идет об этом, так как оба устройства говорят Microphone перед ними в ошибке - person TheFluffDragon9; 26.06.2020
comment
Попробуйте: 2270W как мою последнюю попытку помочь вам. - person Eno Gerguri; 26.06.2020
comment
Говорит, что не может найти устройства с таким именем. Я ценю ваши усилия, хотя - person TheFluffDragon9; 26.06.2020
comment
@TheFluffDragon9 Извините, я не мог помочь, но я оставлю вас с этим: pyaudio">stackoverflow.com/questions/26573556/ - person Eno Gerguri; 26.06.2020
comment
Вы можете использовать query_devices() для получения списка устройств - person Eno Gerguri; 26.06.2020

Можно просто указать устройство вывода - например:

import sounddevice as REC
REC.default.device = 'Speakers (Realtek High Definition Audio), Windows DirectSound'

Чтобы получить все звуковые устройства, которые sounddevice распознает, вы можете использовать эту команду в вашей командной строке:

this:    py -m sounddevice
or this: python -m sounddevice
or this: python3 -m sounddevice

рабочий код для меня:

from scipy.io.wavfile import wavWrite
import sounddevice as REC

# Recording properties
SAMPLE_RATE = 44100
SECONDS = 10

# Channels
MONO    = 1
STEREO  = 2

# Command to get all devices listed: py -m sounddevice 
# Device you want to record
REC.default.device = 'VoiceMeeter VAIO3 Output (VB-Audio VoiceMeeter VAIO3), Windows DirectSound'

print(f'Recording for {SECONDS} seconds')

# Starts recording
recording = REC.rec( int(SECONDS * SAMPLE_RATE), samplerate = SAMPLE_RATE, channels = MONO)
REC.wait()  # Waits for recording to finish

# Writes recorded data in to the wave file
wavWrite('recording.wav', SAMPLE_RATE, recording)
person GTDT    schedule 13.07.2021