Как я могу сыграть один образец PCM на Python?

Я намерен передавать сэмплы PCM в мою звуковую карту только тогда, когда захочу со скоростью, которую выберу. Лучшим решением для меня в этом случае было бы иметь функцию, которая берет один образец PCM, передает его на звуковую карту и воспроизводит ее.

Есть ли библиотека для этого? Я пробовал alsaaudio, который позволяет мне записывать данные PCM на его alsaaudio.device, но начинает играть только после того, как я закончу записывать в него данные (как они это сделали, для меня это большое удивление).

Если нет, могу ли я написать простую функцию для этого?

1 ответ

Согласно Википедии, один образец - это просто числовое значение, представляющее текущую "амплитуду" устройства воспроизведения. ( https://en.wikipedia.org/wiki/Sampling_(signal_processing))

Стандартная частота дискретизации аудиофайлов начинается с 44,1 кГц. Это означает, что у вас есть как минимум 44100 выборок в секунду. Так вы действительно хотите воспроизводить аудиосэмплы один за другим? Я не уверен, но, вероятно, это невозможно по одному, так как операция передачи данных на аудиоустройство стоит очень дорого.

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

Другие вопросы по тегам