Модуль позволяет работать с кросплатформенной библиотекой PortAudio, проигрывать и записывать звуки.
pyaudio.
get_format_from_width
(width, unsigned-True)возвращает Типы образцов формата PortAudio для указанной ширины
width (int) – ширина образца в байтах
unsigned (bool) – для ширины 1 байт, знаковый или беззнаковый
ValueError – если ширина не корректна
pyaudio.
get_portaudio_version
()возвращает версию PortAudio
>>> pyaudio.get_portaudio_version()
1899L
pyaudio.
get_portaudio_version_text
()возврашает полную информацию о версии модуля
>>> pyaudio.get_portaudio_version_text()
u'PortAudio V19-devel (built Feb 25 2014 21:09:53)'
pyaudio.
get_sample_size
(format)возвращает размер (в байтах) для заданного формата образца
format – Типы образцов
ValueError – при неверном типе формата
pyaudio.
PyAudio
основной объект модуля, который предоставляет возможность работы со звуком.
close
(stream)закрывает поток
stream (pyaudio.Stream) – поток
ValueError – если потока не существует
get_default_host_api_info
()возвращает словарь, содержащий устройства для работы со звуком в системе
IOError – если нет устройств в системе
>>> p.get_default_host_api_info()
{'defaultInputDevice': 5L,
'defaultOutputDevice': 5L,
'deviceCount': 6L,
'index': 0L,
'name': u'ALSA',
'structVersion': 1L,
'type': 8L}
get_default_input_device_info
()возвращает словарь, содержащий устройства ввода в системе
>>> p.get_default_input_device_info()
{'defaultHighInputLatency': 0.034829931972789115,
'defaultHighOutputLatency': 0.034829931972789115,
'defaultLowInputLatency': 0.008707482993197279,
'defaultLowOutputLatency': 0.008707482993197279,
'defaultSampleRate': 44100.0,
'hostApi': 0L,
'index': 5L,
'maxInputChannels': 32L,
'maxOutputChannels': 32L,
'name': u'default',
'structVersion': 2L}
get_default_output_device_info
()возвращает словарь, содержащий устройства вывода в системе
>>> p.get_default_output_device_info()
{'defaultHighInputLatency': 0.034829931972789115,
'defaultHighOutputLatency': 0.034829931972789115,
'defaultLowInputLatency': 0.008707482993197279,
'defaultLowOutputLatency': 0.008707482993197279,
'defaultSampleRate': 44100.0,
'hostApi': 0L,
'index': 7L,
'maxInputChannels': 32L,
'maxOutputChannels': 32L,
'name': u'default',
'structVersion': 2L}
get_device_count
()возвращает количесвто устройств
>>> p.get_device_count()
8L
get_device_info_by_host_api_device_index
(host_api_index, host_api_device_index)возвращает словарь, содержащий параметры для указанного устройства.
для неподдерживаемых устройств
get_device_info_by_index
(device_index)возвращает словарь, информацию об устройстве
IOError – для неподдерживаемых устройств
get_format_from_width
(width, unsigned-True)возвращает Типы образцов для указанной ширины. аналог get_format_from_width()
width (int) – ширина образца в байтах (от 1 до 4)
unsigned (bool) – для ширины 1 байт, знаковый или беззнаковый
если ширина не корректна
get_host_api_count
()возвращает количество доступных интерфейсов PortAudio.
>>> p.get_host_api_count()
2L
get_host_api_info_by_index
(host_api_index)возвращает словарь, информацию об устройстве
IOError – для неподдерживаемых устройств
get_host_api_info_by_type
(host_api_type)возвращает словарь, информацию об устройстве
IOError – для неподдерживаемых устройств
get_sample_size
(format)возвращает размер (в байтах) для заданного формата образца, аналог get_sample_size()
format – Типы образцов
ValueError – при неверном типе формата
is_format_supported
(rate, input_device=None, input_channels=None, input_format=None, output_device=None, output_channels=None, output_format=None)возвращает True, если указанная конфигурация поддерживается устройством, иначе возбуждает исключение
rate – скорость потока (в Hz)
input_device – индекс входного устройств. None для полудуплексных выходных потоков
input_channels – количество входных каналов. Игнорируется если input_device не задан
input_format – входной формат PortAudio
output_device – индекс выходного устройства. None для полудуплексных входных потоков
output_channels – количество выходных каналов. Игнорируется если output_device не задан
output_format – выходной формат PortAudio
ValueError – если конфигурация не поддерживается. Исключение в виде кортежа (error string, PortAudio Error Code).
open
(*args, **kwargs)возвращает объект Stream
, открывает поток на воспроизведение или чтение звука. принимает те же параметр что и конструктор Stream
terminate
()закрывает объект
pyaudio.
Stream
(**kwargs)звуковой поток. используйте PyAudio.open()
для получения данного объекта
PA_manger – ссылка на экземпляр PyAudio
rate – скорость потока
channels – количество каналов
format – Типы образцов
input – указывает, что это входной поток, по умолчанию False
output – указывает, что это выходной поток, по умолчанию False
input_device_index – индекс входного устройства, игнорируется, если input = False. По умолчанию None, дефолтное устройство
output_device_index – индекс выходного устройства, игнорируется, если output = False. По умолчанию None, дефолтное устройство
frames_per_buffer – количество фреймов в буфере
start – стартует поток после инициализации сразу, по умолчанию True
input_host_api_specific_stream_info – указывает на специфичное хост входное устройтсво (pyaudio.PaMacCoreStreamInfo
)
output_host_api_specific_stream_info – указывает на специфичное хост выходное устройтсво (pyaudio.PaMacCoreStreamInfo
)
stream_callback – обработчик потока, вызывается каждый раз, когда в поток попадают данные. сигнатура обработчика callback(input_data, frame_count, time_info, status_flag), должен возвраващть кортеж (frame_count, flag)
close
()закрывает поток
get_cpu_load
()возвращает вещественное число, загрузку процессора
get_input_latency
()возвращает задержку ввода
get_output_latency
()возвращает задержку вывода
get_time
()возвращает количество фреймов, которые могут быть записаны без ожидания
get_write_available
()возвращает время потока
is_active
()возвращает статус состояния потока
is_stopped
()возвращает статус состояния потока
read
(num_frames)читает данные из потока, при записи звука
start_stream
()запускает поток
stop_stream
()завершает поток
write
(frames, num_frames=None, exception_on_underflow=False)записывает в поток данные, например при воспроизведении звука
frames – данные
num_frames – количество данных для записи в поток
exception_on_underflow – обработка ошибки переполнения потока
pyaudio.
PaMacCoreStreamInfo
(flags=None, channel_map=None)утсройство доступное только на MacOS
flags – Специфичные типы для MacOS
channel_map – массив, описывающий отображанеие канала
get_channel_map
()возвращает карту канала
get_flags
()возвращает флаги
paFloat32 - 1
32-х битный long
paInt32 - 2
32-х битный int
paInt24 - 4
24-х битный int
paInt16 - 8
16 битный int
paInt8 - 16
8 битный int
paUint8 - 32
8 битный беззнаковый int
paCustomFormat - 65536
специальный формат
paContinue - 0
следующитй блок потока
paComplete - 1
последний блок потока
paAbort - 2
обнаружена ошибка, остановить проигрывание или запись
paInputUnderflow - 1
входной буфер не заполнен
paInputOverflow - 2
входной буфер переполнен
paOutputUnderflow - 4
выходной поток не заполнен
paOutputOverflow - 8
выходной поток переполнен
paPrimingOutput - 16
подготовка, но ещё не воспроизведение
paInDevelopment - 0
Still in development
paDirectSound - 1
DirectSound (Windows only)
paMME - 2
Multimedia Extension (Windows only)
paASIO - 3
Steinberg Audio Stream Input/Output
paSoundManager - 4
SoundManager (OSX only)
paCoreAudio - 5
CoreAudio (OSX only)
paOSS - 7
Open Sound System (Linux only)
paALSA - 8
Advanced Linux Sound Architecture (Linux only)
paAL - 9
Open Audio Library
paBeOS - 10
BeOS Sound System
paWDMKS - 11
Windows Driver Model (Windows only)
paJACK - 12
JACK Audio Connection Kit
paWASAPI - 13
Windows Vista Audio stack architecture
paNoDevice - -1
нет актуалного устройства
pyaudio.
paNoError
pyaudio.
paNotInitialized
pyaudio.
paUnanticipatedHostError
pyaudio.
paInvalidChannelCount
pyaudio.
paInvalidSampleRate
pyaudio.
paInvalidDevice
pyaudio.
paInvalidFlag
pyaudio.
paSampleFormatNotSupported
pyaudio.
paBadIODeviceCombination
pyaudio.
paInsufficientMemory
pyaudio.
paBufferTooBig
pyaudio.
paBufferTooSmall
pyaudio.
paNullCallback
pyaudio.
paBadStreamPtr
pyaudio.
paTimedOut
pyaudio.
paInternalError
pyaudio.
paIncompatibleHostApiSpecificStreamInfo
pyaudio.
paStreamIsStopped
pyaudio.
paStreamIsNotStopped
pyaudio.
paInputOverflow
pyaudio.
paOutputUnderflowed
pyaudio.
paHostApiNotFound
pyaudio.
paInvalidHostApi
pyaudio.
paCanNotReadFromACallbackStream
pyaudio.
paCanNotWriteToACallbackStream
pyaudio.
paCanNotReadFromAnOutputOnlyStream
pyaudio.
paCanNotWriteToAnInputOnlyStream
pyaudio.
paIncompatibleStreamHostApi
pyaudio.
paMacCoreChangeDeviceParameters
pyaudio.
paMacCoreFailIfConversionRequired
pyaudio.
paMacCoreConversionQualityMin
pyaudio.
paMacCoreConversionQualityMedium
pyaudio.
paMacCoreConversionQualityLow
pyaudio.
paMacCoreConversionQualityHigh
pyaudio.
paMacCoreConversionQualityMax
pyaudio.
paMacCorePlayNice
pyaudio.
paMacCorePro
pyaudio.
paMacCoreMinimizeCPUButPlayNice
pyaudio.
paMacCoreMinimizeCPU
"""проигрывание wav файла, блокирующий поток выполнения"""
import pyaudio
import wave
import sys
CHUNK - 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf - wave.open(sys.argv[1], 'rb')
# instantiate PyAudio (1)
p - pyaudio.PyAudio()
# open stream (2)
stream - p.open(format-p.get_format_from_width(wf.getsampwidth()),
channels-wf.getnchannels(),
rate-wf.getframerate(),
output-True)
# read data
data - wf.readframes(CHUNK)
# play stream (3)
while data !- '':
stream.write(data)
data - wf.readframes(CHUNK)
# stop stream (4)
stream.stop_stream()
stream.close()
# close PyAudio (5)
p.terminate()
"""проигрывание wav файла, не блокирующий поток"""
import pyaudio
import wave
import time
import sys
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf - wave.open(sys.argv[1], 'rb')
# instantiate PyAudio (1)
p - pyaudio.PyAudio()
# define callback (2)
def callback(in_data, frame_count, time_info, status):
data - wf.readframes(frame_count)
return (data, pyaudio.paContinue)
# open stream using callback (3)
stream - p.open(format-p.get_format_from_width(wf.getsampwidth()),
channels-wf.getnchannels(),
rate-wf.getframerate(),
output-True,
stream_callback-callback)
# start the stream (4)
stream.start_stream()
# wait for stream to finish (5)
while stream.is_active():
time.sleep(0.1)
# stop stream (6)
stream.stop_stream()
stream.close()
wf.close()
# close PyAudio (7)
p.terminate()