Needle 3 Audio Formats for Speech Input: WAV, PCM16, and Float32 Support
Needle 3 accepts speech input in three specific audio formats—WAV, PCM16, and Float32—which are validated through the internal _prepare_audio helper in needle/__init__.py.
The open-source Needle 3 framework provides native speech processing capabilities through its core agent API. When submitting audio data to methods like agent.complete() or agent.run(), developers must specify the encoding format via the audio_format parameter to ensure correct decoding. According to the cactus-compute/needle source code, format validation occurs in needle/__init__.py, where the _prepare_audio function maps format strings to numeric constants in _AUDIO_FORMATS and raises a ValueError for unsupported encodings.
Supported Audio Formats for Speech Input
Needle 3 recognizes three distinct audio encodings for speech input. Each format serves different use cases, from file-based ingestion to raw byte streams from audio capture hardware.
WAV Format
The wav format accepts standard WAV container files. Developers can provide either a file path string or raw bytes from a .wav file. When using this format, Needle 3 automatically extracts the sample rate and channel count from the WAV header, making it the simplest option for file-based speech input.
PCM16 Format
The pcm16 format expects 16-bit signed little-endian PCM audio data. This raw format requires explicit configuration of the sample_rate and channels parameters in the API call. Use this encoding when streaming live audio from microphones or processing raw audio buffers without container headers.
Float32 Format
The float32 format accepts 32-bit floating-point PCM audio. Like PCM16, this raw encoding requires manual specification of sample_rate and channels. This format is ideal for applications working with normalized audio data or direct output from digital signal processing pipelines.
API Implementation Details
As implemented in cactus-compute/needle, the audio preparation logic resides in needle/__init__.py. The _prepare_audio function validates the audio_format argument against the internal _AUDIO_FORMATS mapping, which assigns numeric codes to each supported format string. If the supplied format does not match wav, pcm16, or float32, the function raises a ValueError before the audio data reaches the inference engine.
Code Examples
The following examples demonstrate how to use each supported audio format with Needle 3's agent API.
# Example 1 – Using a WAV file from disk
response = agent.complete(
audio="command.wav", # path to a WAV file
audio_format="wav", # explicit (default) format
sample_rate=16000, # optional, ignored for WAV
channels=1 # optional, ignored for WAV
)
# Example 2 – Feeding raw PCM‑16 bytes
pcm16_bytes = b"\x01\x02..." # your PCM‑16 audio payload
response = agent.embed(
audio=pcm16_bytes,
audio_format="pcm16",
sample_rate=16000,
channels=1
)
# Example 3 – Using Float32 audio in memory
import numpy as np
float32_bytes = np.random.rand(16000).astype(np.float32).tobytes()
response = agent.run(
query="What did the speaker say?",
audio=float32_bytes,
audio_format="float32",
sample_rate=16000,
channels=1
)
Summary
- Needle 3 supports three audio formats for speech input:
wav,pcm16, andfloat32, as defined inneedle/__init__.py. - The
_prepare_audiohelper validates all audio format strings against the internal_AUDIO_FORMATSmapping and rejects unsupported encodings with aValueError. - WAV files auto-detect metadata, while PCM16 and Float32 require explicit
sample_rateandchannelsparameters in the API call. - These formats apply to core methods including
agent.complete(),agent.embed(), andagent.run().
Frequently Asked Questions
What audio formats does Needle 3 support for speech input?
Needle 3 supports wav, pcm16, and float32 audio formats. The wav format accepts standard WAV container files, while pcm16 and float32 accept raw 16-bit signed integer and 32-bit floating-point PCM data, respectively.
Do I need to specify sample rate and channels for WAV files in Needle 3?
No. When using the wav format, Needle 3 automatically extracts the sample rate and channel count from the WAV file header. However, PCM16 and Float32 formats require explicit sample_rate and channels parameters since they lack container metadata.
Where is audio format validation handled in the Needle 3 source code?
Audio format validation occurs in needle/__init__.py within the _prepare_audio function. This helper maps format strings to numeric codes stored in _AUDIO_FORMATS and raises a ValueError if an unsupported format is provided.
What happens if I provide an unsupported audio format to Needle 3?
If you specify an audio format other than wav, pcm16, or float32, the _prepare_audio function raises a ValueError during the API call validation phase, preventing the request from reaching the speech processing pipeline.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →