Есть ли способ, которым я могу использовать звуковое устройство библиотеки python для записи вывода через мои динамики в файл? Например, если бы я воспроизвел какие-либо звуки через свой компьютер, они были бы записаны в файл mp4/wav.
Как записать вывод динамика в файловое звуковое устройство
comment
Это не; В этом вопросе они пытаются писать тоны на основе частот и амплитуд. В моем вопросе я хотел бы записать любые звуки, которые издает мой компьютер, и записать их в файл. Например, если бы я воспроизвел песню, она была бы записана в файл. Я понимаю, что я не лучший в формулировках вопросов. Спасибо за столь быстрый ответ @EnoGerguri
- person TheFluffDragon9   schedule 26.06.2020
comment
См. stackoverflow.com/q/58780206, github.com/spatialaudio/python-sounddevice/issues/129, github.com/spatialaudio/python-sounddevice/issues/244.
- person Matthias   schedule 28.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
Это помогает при записи в файл wav, но записывает звук через мой микрофон вместо звуков, издаваемых моим компьютером, как если бы я воспроизводил на нем видео; звук, который будет исходить из моих динамиков.
- person TheFluffDragon9; 26.06.2020
@ TheFluffDragon9 Я отредактировал свой ответ, чтобы изменить устройство ввода на ваш динамик. Если это не сработает, я удалю свой ответ.
- person Eno Gerguri; 26.06.2020
Как узнать полное имя спикера? Есть ли способ распечатать список dveice или что-то в этом роде? Спасибо за всю твою помощь! Кстати, точка после
'digital output'
должна быть там?
- person TheFluffDragon9; 26.06.2020
@TheFluffDragon9 TheFluffDragon9, если вы используете Windows, вы можете перейти к настройкам звука и увидеть имя устройства вывода, которое вы хотите ввести.
- person Eno Gerguri; 26.06.2020
Извините, что продолжаю задавать вопросы, но я просто хочу, чтобы это было правильно. Если мои настройки звука говорят это, и мне нужны нижние динамики, как выглядит моя строка кода?
- person TheFluffDragon9; 26.06.2020
@TheFluffDragon9
sd.default.device = 'Intel SST Audio Device (WDM)'
вам также следует попробовать динамики.
- person Eno Gerguri; 26.06.2020
Когда я использую эту строку, она говорит:
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
Это оба микрофонных устройства; Я начинаю думать, что невозможно записать с устройства вывода
- person TheFluffDragon9; 26.06.2020
Удалите тот, который вы не используете, не волнуйтесь, он автоматически переустановится, когда вы снова подключите его. (Я думаю)
- person Eno Gerguri; 26.06.2020
Однако речь идет о двух микрофонах, связанных с компьютером, а не о двух динамиках на изображении. Я отключил динамики, и ошибка все та же.
- person TheFluffDragon9; 26.06.2020
Это потому, что оба динамика на изображении имеют одинаковое имя.
- person Eno Gerguri; 26.06.2020
Я знаю, но я удалил один из них, и ошибка та же, потому что речь идет о микрофонах Intel SST Audio Device (WDM), а не о динамиках.
- person TheFluffDragon9; 26.06.2020
На изображении он имеет название
Speakers
- person Eno Gerguri; 26.06.2020
Да, но я думаю, что речь идет об этом, так как оба устройства говорят
Microphone
перед ними в ошибке
- person TheFluffDragon9; 26.06.2020
Попробуйте:
2270W
как мою последнюю попытку помочь вам.
- person Eno Gerguri; 26.06.2020
Говорит, что не может найти устройства с таким именем. Я ценю ваши усилия, хотя
- person TheFluffDragon9; 26.06.2020
@TheFluffDragon9 Извините, я не мог помочь, но я оставлю вас с этим: pyaudio">stackoverflow.com/questions/26573556/
- person Eno Gerguri; 26.06.2020
Вы можете использовать
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