Skip to main content

Easy Audio Interfaces

Easy Audio Interfaces is a Python library that provides a simple and flexible way to work with audio streams, including recording, playback, network transfer, and processing.

Features

  • Socket-based audio streaming
  • Local file reading and writing
  • Audio resampling and rechunking
  • Voice activity detection (VAD) using Silero VAD model
  • Network file transfer

Quick Start

Here's a simple example to get you started - record audio from a socket, process it, and save to a file:

from easy_audio_interfaces import SocketReceiver, LocalFileSink, RechunkingBlock, ResamplingBlock

async with SocketReceiver() as receiver, LocalFileSink("output.wav") as sink:
    rechunker = RechunkingBlock(chunk_size=512)
    resampler = ResamplingBlock(original_sample_rate=receiver.sample_rate, resample_rate=16000)

    rechunked_stream = rechunker.rechunk(receiver)
    resampled_stream = resampler.resample(rechunked_stream)
    await sink.write_from(resampled_stream)

Advanced Usage: Manual Chunk Processing with ResamplingBlock

For more control over individual audio chunks, you can use process_chunk and process_chunk_last:

from easy_audio_interfaces import ResamplingBlock
from wyoming.audio import AudioChunk

resampler = ResamplingBlock(resample_rate=16000)
await resampler.open()

# Process individual chunks
for chunk in audio_chunks:
    async for resampled_chunk in resampler.process_chunk(chunk):
        # Handle each resampled chunk
        process_audio(resampled_chunk)

# Important: Flush remaining buffered samples
async for final_chunk in resampler.process_chunk_last():
    process_audio(final_chunk)

await resampler.close()

Installation

From PyPI

uv add easy-audio-interfaces

From Source

uv add "https://github.com/AnkushMalaker/python-audio-interfaces.git"

Optional Dependencies

Based on the functionality you require, you should consider installing with the following extras:

# For speech-to-text
uv add "easy-audio-interfaces[stt]"

# For voice activity detection
uv add "easy-audio-interfaces[silero-vad]"

# For Bluetooth audio
uv add "easy-audio-interfaces[bluetooth]"

# For local audio devices
uv add "easy-audio-interfaces[local-audio]"

Usage

Main Components

Audio Sources

  • SocketReceiver: Receives audio data over a WebSocket connection
  • LocalFileStreamer: Streams audio data from a local file

Audio Sinks

  • SocketStreamer: Sends audio data over a WebSocket connection
  • LocalFileSink: Writes audio data to a local file

Processing Blocks

  • CollectorBlock: Collects audio samples for a specified duration
  • ResamplingBlock: Resamples audio to a different sample rate
    • process_chunk_last(): Flushes remaining buffered samples from the resampler. Call this after processing all chunks to ensure no audio data is lost due to internal buffering.
  • RechunkingBlock: Rechunks audio data into fixed-size chunks

Voice Activity Detection

  • SileroVad: Uses the Silero VAD model for voice activity detection
  • VoiceGate: Applies voice activity detection to segment audio

Examples

Basic Friend Recorder

Records voice segments from a network stream using VAD:

python -m easy_audio_interfaces.examples.basic_friend_recorder

File Network Transfer

Transfer audio files over a network:

# Sender
python -m easy_audio_interfaces.examples.file_network_transfer sender input_file.wav --host localhost --port 8080

# Receiver
python -m easy_audio_interfaces.examples.file_network_transfer receiver output_file.wav --host 0.0.0.0 --port 8080

For more detailed usage and API documentation, please refer to the docstrings in the source code.

Metadata

Release files for easy-audio-interfaces 0.8.0

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

Source distribution (sdist)

Source distribution for easy-audio-interfaces 0.8.0
File Size Uploaded
easy_audio_interfaces-0.8.0.tar.gz 36.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for easy-audio-interfaces 0.8.0
File Interpreter ABI Platform
easy_audio_interfaces-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 79.8 kB

Release files / easy_audio_interfaces-0.8.0.tar.gz

Download URL easy_audio_interfaces-0.8.0.tar.gz
Size 36.6 kB
Tags Source
SHA-256 checksum
How to use checksums
818668ad5f9439b1efe6190c1c21f92c68c69a925841c22fa8a9d91ee129c340
BLAKE2b-256 checksum
How to use checksums
5f66a461d7155f41b5d542d2dbb77d038b05305345daffebb632f70d56fc3402
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / easy_audio_interfaces-0.8.0-py3-none-any.whl

Download URL easy_audio_interfaces-0.8.0-py3-none-any.whl
Size 43.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
38e9c3cb6c65489c6b3ef77d7257f190542456720c4c1715940fdd1c3524c653
BLAKE2b-256 checksum
How to use checksums
1c1e4e28d686c9cf700f3755af3e2897da6ad8a4617ea21e03091e3e0003d9b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

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