Документация Python неофициальный перевод

sunaudio.md

88 строк · 9.3 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/sunaudio.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 40.1. [`sunaudiodev`](https://python-all.ru/2.7/library/sunaudio.html#module-sunaudiodev) – Доступ к аудиооборудованию Sun89Устарело с версии 2.6: Модуль [`sunaudiodev`](https://python-all.ru/2.7/library/sunaudio.html#module-sunaudiodev) удалён в Python 3.1011Этот модуль предоставляет доступ к аудиоинтерфейсу Sun. Аудиооборудование Sun может записывать и воспроизводить аудиоданные в формате u-LAW с частотой дискретизации 8 кГц. Полное описание можно найти на странице руководства *audio(7I)*.1213Модуль [`SUNAUDIODEV`](https://python-all.ru/2.7/library/sunaudio.html#module-SUNAUDIODEV) определяет константы, которые могут использоваться с этим модулем.1415Этот модуль определяет следующие переменные и функции:1617#### `exception sunaudiodev.error`1819Это исключение вызывается при всех ошибках. Аргументом является строка, описывающая, что пошло не так.2021#### `sunaudiodev.open(mode)`2223Эта функция открывает аудиоустройство и возвращает объект аудиоустройства Sun. Затем этот объект можно использовать для ввода-вывода. Параметр *mode* может принимать значения `'r'` (только запись), `'w'` (только воспроизведение), `'rw'` (запись и воспроизведение) и `'control'` (доступ к устройству управления). Поскольку только одному процессу разрешено одновременно открывать устройство записи или воспроизведения, рекомендуется открывать устройство только для необходимой операции. Подробнее см. *audio(7I)*.2425Согласно man-странице, этот модуль сначала ищет базовое имя файла аудиоустройства в переменной окружения `AUDIODEV`. Если не найдено, используется `/dev/audio`. Устройство управления формируется добавлением «ctl» к базовому имени аудиоустройства.2627## 40.1.1. Объекты аудиоустройств2829Объекты аудиоустройства возвращаются функцией [`open()`](https://python-all.ru/2.7/library/sunaudio.html#sunaudiodev.open) и определяют следующие методы (кроме объектов `control`, которые предоставляют только `getinfo()`, `setinfo()`, `fileno()` и `drain()`):3031#### `audio device.close()`3233Этот метод явно закрывает устройство. Он полезен в ситуациях, когда удаление объекта не приводит к немедленному закрытию, так как существуют другие ссылки на него. Закрытое устройство не следует использовать повторно.3435#### `audio device.fileno()`3637Возвращает файловый дескриптор, связанный с устройством. Его можно использовать для настройки уведомления `SIGPOLL`, как описано ниже.3839#### `audio device.drain()`4041Этот метод ожидает обработки всех ожидающих вывода данных и затем возвращает управление. Вызов этого метода часто не требуется: уничтожение объекта автоматически закроет аудиоустройство и выполнит неявный сброс.4243#### `audio device.flush()`4445Этот метод отбрасывает все ожидающие вывода данные. Его можно использовать, чтобы избежать медленной реакции на запрос пользователя об остановке (из-за буферизации до одной секунды звука).4647#### `audio device.getinfo()`4849Этот метод извлекает информацию о состоянии, такую как громкость входа и выхода и т.д., и возвращает её в виде объекта состояния аудиоустройства. Этот объект не имеет методов, но содержит ряд атрибутов, описывающих текущее состояние устройства. Имена и значения атрибутов описаны в `<sun/audioio.h>` и на странице руководства *audio(7I)*. Имена членов немного отличаются от их аналогов на C: объект состояния – это всего одна структура. Члены подструктуры `play` имеют префикс `o_` в имени, а члены структуры `record` – префикс `i_`. Так, член C `play.sample_rate` доступен как `o_sample_rate`, `record.gain` как `i_gain`, а `monitor_gain` – как `monitor_gain`.5051#### `audio device.ibufcount()`5253Этот метод возвращает количество сэмплов, буферизованных на стороне записи, т.е. программа не будет блокироваться при вызове `read()` для такого количества сэмплов.5455#### `audio device.obufcount()`5657Этот метод возвращает количество сэмплов, буферизованных на стороне воспроизведения. К сожалению, это число нельзя использовать для определения количества сэмплов, которые можно записать без блокировки, так как длина очереди вывода ядра, по-видимому, переменная.5859#### `audio device.read(size)`6061Этот метод читает *size* сэмплов из аудиовхода и возвращает их в виде строки Python. Функция блокируется, пока не будет достаточно данных.6263#### `audio device.setinfo(status)`6465Этот метод устанавливает параметры состояния аудиоустройства. Параметр *status* является объектом состояния устройства, возвращаемым функцией `getinfo()` и, возможно, изменённым программой.6667#### `audio device.write(samples)`6869Метод write получает строку Python, содержащую аудиосэмплы для воспроизведения. Если достаточно свободного буферного пространства, он немедленно возвращается, в противном случае блокируется.7071Аудиоустройство поддерживает асинхронное уведомление о различных событиях через сигнал SIGPOLL. Вот пример того, как можно включить это в Python:7273```python74def handle_sigpoll(signum, frame):75    print 'I got a SIGPOLL update'7677import fcntl, signal, STROPTS7879signal.signal(signal.SIGPOLL, handle_sigpoll)80fcntl.ioctl(audio_obj.fileno(), STROPTS.I_SETSIG, STROPTS.S_MSG)81```8283# 40.2. [`SUNAUDIODEV`](https://python-all.ru/2.7/library/sunaudio.html#module-SUNAUDIODEV) – Константы, используемые с [`sunaudiodev`](https://python-all.ru/2.7/library/sunaudio.html#module-sunaudiodev)8485Устарело с версии 2.6: Модуль [`SUNAUDIODEV`](https://python-all.ru/2.7/library/sunaudio.html#module-SUNAUDIODEV) удалён в Python 3.8687Это вспомогательный модуль для [`sunaudiodev`](https://python-all.ru/2.7/library/sunaudio.html#module-sunaudiodev), который определяет полезные символические константы, такие как `MIN_GAIN`, `MAX_GAIN`, `SPEAKER` и т.д. Имена констант совпадают с именами, используемыми в C-заголовочном файле `<sun/audioio.h>`, с удалённой начальной строкой `AUDIO_`.88