Skip to main content

saythanks Latest Version

Python miniaudio

This module provides:

  • the miniaudio cross platform sound playback and conversion library
  • its decoders for wav, flac, vorbis and mp3
  • python bindings via cffi for much of the functions offered in those libraries:
    • getting audio file properties (such as duration, number of channels, sample rate)
    • reading and decoding audio files
    • streaming audio files
    • playback (via efficient asynchronous pull-API)
    • streaming and playback are done with generator functions

Requires Python 3.5 or newer. Also works on pypy3 (because it uses cffi).

Currently, it is only distributed in source form so you need a C compiler to build and install this. For Linux and Mac this shouldn't be a problem. For Windows users it may be though: you have to make sure that the required tools (Visual Studio or the C++ build tools) are installed that allow you to compile Python extension modules.

Software license for these Python bindings, miniaudio and the decoders: MIT

Todo

  • the various format conversion functions aren't properly exposed yet.
  • only playback for now, the recording capabilities of miniaudio aren't exposed yet

API

get_file_info(filename: str) -> miniaudio.SoundFileInfo
    Fetch some information about the audio file.

flac_get_file_info(filename: str) -> miniaudio.SoundFileInfo
    Fetch some information about the audio file (flac format).

flac_get_info(data: bytes) -> miniaudio.SoundFileInfo
    Fetch some information about the audio data (flac format).
    
flac_read_f32(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio file. Resulting sample format is 32 bits float.

flac_read_file_f32(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio file. Resulting sample format is 32 bits float.

flac_read_file_s16(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio file. Resulting sample format is 16 bits signed integer.

flac_read_file_s32(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio file. Resulting sample format is 32 bits signed integer.

flac_read_s16(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio data. Resulting sample format is 16 bits signed integer.

flac_read_s32(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole flac audio data. Resulting sample format is 32 bits signed integer.

flac_stream_file(filename: str, frames_to_read: int = 1024) -> Generator[array.array, NoneType, NoneType]
    Streams the flac audio file as interleaved 16 bit signed integer sample arrays segments.

decode(data: bytes, ma_output_format: int = 2, nchannels: int = 2, sample_rate: int = 44100) -> miniaudio.DecodedSoundFile
    Convenience function to decode any supported audio file in memory to raw PCM samples in your chosen format.

decode_file(filename: str, ma_output_format: int = 2, nchannels: int = 2, sample_rate: int = 44100) -> miniaudio.DecodedSoundFile
    Convenience function to decode any supported audio file to raw PCM samples in your chosen format.

get_devices() -> Tuple[List[str], List[str]]
    Get two lists of supported audio devices: playback devices, recording devices.

stream_file(filename: str, ma_output_format: int = 2, nchannels: int = 2, sample_rate: int = 44100, frames_to_read: int = 1024) -> Generator[array.array, int, NoneType]
    Convenience generator function to decode and stream any supported audio file
    as chunks of raw PCM samples in the chosen format.
    If you send() a number into the generator rather than just using next() on it,
    you'll get that given number of frames, instead of the default configured amount.
    This is particularly useful to plug this stream into an audio device callback that
    wants a variable number of frames per call.

stream_memory(data: bytes, ma_output_format: int = 2, nchannels: int = 2, sample_rate: int = 44100, frames_to_read: int = 1024) -> Generator[array.array, int, NoneType]
    Convenience generator function to decode and stream any supported audio file in memory
    as chunks of raw PCM samples in the chosen format.
    If you send() a number into the generator rather than just using next() on it,
    you'll get that given number of frames, instead of the default configured amount.
    This is particularly useful to plug this stream into an audio device callback that
    wants a variable number of frames per call.

mp3_get_file_info(filename: str) -> miniaudio.SoundFileInfo
    Fetch some information about the audio file (mp3 format).

mp3_get_info(data: bytes) -> miniaudio.SoundFileInfo
    Fetch some information about the audio data (mp3 format).

mp3_read_f32(data: bytes, want_nchannels: int = 0, want_sample_rate: int = 0) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole mp3 audio data. Resulting sample format is 32 bits float.

mp3_read_file_f32(filename: str, want_nchannels: int = 0, want_sample_rate: int = 0) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole mp3 audio file. Resulting sample format is 32 bits float.

mp3_read_file_s16(filename: str, want_nchannels: int = 0, want_sample_rate: int = 0) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole mp3 audio file. Resulting sample format is 16 bits signed integer.

mp3_read_s16(data: bytes, want_nchannels: int = 0, want_sample_rate: int = 0) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole mp3 audio data. Resulting sample format is 16 bits signed integer.

mp3_stream_file(filename: str, frames_to_read: int = 1024, want_nchannels: int = 0, want_sample_rate: int = 0) -> Generator[array.array, NoneType, NoneType]
    Streams the mp3 audio file as interleaved 16 bit signed integer sample arrays segments.

read_file(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole audio file. Resulting sample format is 16 bits signed integer.

vorbis_get_file_info(filename: str) -> miniaudio.SoundFileInfo
    Fetch some information about the audio file (vorbis format).

vorbis_get_info(data: bytes) -> miniaudio.SoundFileInfo
    Fetch some information about the audio data (vorbis format).

vorbis_read(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole vorbis audio data. Resulting sample format is 16 bits signed integer.

vorbis_read_file(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole vorbis audio file. Resulting sample format is 16 bits signed integer.

vorbis_stream_file(filename: str) -> Generator[array.array, NoneType, NoneType]
    Streams the ogg vorbis audio file as interleaved 16 bit signed integer sample arrays segments.

wav_get_file_info(filename: str) -> miniaudio.SoundFileInfo
    Fetch some information about the audio file (wav format).

wav_get_info(data: bytes) -> miniaudio.SoundFileInfo
    Fetch some information about the audio data (wav format).

wav_read_f32(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio data. Resulting sample format is 32 bits float.

wav_read_file_f32(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio file. Resulting sample format is 32 bits float.

wav_read_file_s16(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio file. Resulting sample format is 16 bits signed integer.

wav_read_file_s32(filename: str) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio file. Resulting sample format is 32 bits signed integer.

wav_read_s16(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio data. Resulting sample format is 16 bits signed integer.

wav_read_s32(data: bytes) -> miniaudio.DecodedSoundFile
    Reads and decodes the whole wav audio data. Resulting sample format is 32 bits signed integer.

wav_stream_file(filename: str, frames_to_read: int = 1024) -> Generator[array.array, NoneType, NoneType]
    Streams the WAV audio file as interleaved 16 bit signed integer sample arrays segments.


class PlaybackDevice(ma_output_format: int = 2, nchannels: int = 2, sample_rate: int = 44100, buffersize_msec: int = 200)
   
   An audio device provided by miniaudio, for audio playback.
   
   close(self)
       Halt playback and close down the device.
   
   start(self, audio_producer: Callable[[int, int, int], Union[bytes, array.array]]) -> None
       Start the audio device: playback begins. The audio data is provided by the given audio_producer
       generator. The generator gets sent the required number of frames and should yield the sample data
       as raw bytes or as an array.array.  (it should already be started before passing it in)
   
   stop(self) -> None
       Halt playback.

Metadata

Release files for miniaudio 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for miniaudio 1.2.2
File Size Uploaded
miniaudio-1.2.2.tar.gz 422.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for miniaudio 1.2.2
File Interpreter ABI Platform
miniaudio-1.2.2-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
miniaudio-1.2.2-cp37-cp37m-win32.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-32 Details

Total release size: 843.4 kB

Release files / miniaudio-1.2.2.tar.gz

Download URL miniaudio-1.2.2.tar.gz
Size 422.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a650483d7800be09498ed54947024214343dbcad7960302184afa61682830c18
BLAKE2b-256 checksum
How to use checksums
ca632bc537dac48cd307e8ffe138d29a94a0162fdf2f06fe2ebe9a9b30195faa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.3

Release files / miniaudio-1.2.2-cp37-cp37m-win_amd64.whl

Download URL miniaudio-1.2.2-cp37-cp37m-win_amd64.whl
Size 226.4 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
01dca54d43fd24ca16b3ba494b4cdaac999b887407ee4ba539e54685723b8367
BLAKE2b-256 checksum
How to use checksums
516af134bc282181bb3b6ba1387f304e313fc662b3a77714061666045b86bd2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

Release files / miniaudio-1.2.2-cp37-cp37m-win32.whl

Download URL miniaudio-1.2.2-cp37-cp37m-win32.whl
Size 194.5 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
11f45c071bdb6117ba4e6532236ae9fddee4cd0e5d60bca4f396819eda32bd24
BLAKE2b-256 checksum
How to use checksums
fc0b2e04ad679128ada4c116201a87014483c1255a9b5f27b59dfcb9625a90ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

Release history Release notifications | RSS feed

1.71

31 release files

1.70

33 release files

1.61

60 release files

1.60

60 release files

1.59

52 release files

1.58

47 release files

1.57

37 release files

1.56

37 release files

1.55

37 release files

1.54

37 release files

1.53

37 release files

1.52

37 release files

1.51

37 release files

1.50

37 release files

1.46

37 release files

1.45

6 release files

1.44

4 release files

1.43

5 release files

1.42

5 release files

1.41

6 release files

1.40

6 release files

1.39

6 release files

1.38

6 release files

1.37

6 release files

1.36

6 release files

1.35

6 release files

1.34

6 release files

1.33

6 release files

1.32

6 release files

1.31

6 release files

1.30

6 release files

1.23

6 release files

1.22

6 release files

1.21

6 release files

1.20

6 release files

1.10

6 release files

1.9

5 release files

1.8

5 release files

1.7

6 release files

1.6

4 release files

1.5

3 release files

1.4

3 release files

1.3

3 release files

This release

1.2.2 This release

3 release files

1.2

1 release file

1.1

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page