параметр "out" для звукового устройства - PullRequest
0 голосов
/ 06 марта 2019

Я хотел бы использовать параметр "out", чтобы записать записанный сигнал в заданный массив numpy, но я не добавляю аудио в массив, который я передаю.Нужно ли определять частоту дискретизации, если я хочу использовать частоту дискретизации по умолчанию?В документации нет конкретного примера использования, поэтому, если есть какие-либо предложения по правильному использованию, см. Пример ниже:

import sounddevice as sd
import numpy as np
import time

input_chs = [1,2]
rec_array = np.zeros([1, len(input_chs)])
sd.rec(out=rec_array, mapping=input_chs)
time.sleep(1)
sd.stop()
print(rec_array)  # Returns original rec_array

Я также пытался

rec_array = sd.rec(out=rec_array, mapping=input_chs)

, но результаты были такими же.

1 Ответ

0 голосов
/ 06 марта 2019

Записанные аудиоданные не добавляются в массив out.Массив out заполняется записанными данными вплоть до их размера, затем запись останавливается (при условии, что вы используете sd.wait() или blocking=True).

Вы передаете массив out столько одна строка, это означает, что будет записан только один кадр.Вы должны использовать int(desired_duration_in_seconds * samplerate) строк для вашего out массива.

Другими словами, вы должны заранее знать, как долго должна длиться запись.Затем вы можете использовать sd.wait() для завершения записи.

Если вы хотите сделать запись, для которой вы не знаете длительности заранее, вам следует взглянуть на пример https://github.com/spatialaudio/python-sounddevice/blob/master/examples/rec_unlimited.py.

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

Если вы хотите использовать значение по умолчанию, вам не нужно явно указывать его.

...