Arctan Voice Isolation
Arctan Voice Isolation is a Python SDK for real-time voice isolation in voice agents and audio pipelines.
It supports standard NumPy audio processing and integrations for LiveKit and Pipecat.
Installation
Install the base SDK:
pip install arctan-vi
Install a framework integration:
pip install "arctan-vi[livekit]"
pip install "arctan-vi[pipecat]"
Arctan Voice Isolation 0.8.1 supports CPython 3.10-3.14 on Linux x86-64
(glibc 2.28 or newer) and Windows x86-64. The Pipecat integration requires
Python 3.11 or newer.
SDK key
Set your Arctan SDK key in the runtime environment:
export ARCTAN_SDK_KEY="arc_sk_live_..."
You can instead pass license_key="arc_sk_live_..." to a model, processor, or
framework integration. An explicit license_key takes precedence over
ARCTAN_SDK_KEY.
Standard Python
Process one stream
import numpy as np
import arctan
config = arctan.ProcessorConfig(sample_rate=24_000, num_channels=1)
processor = arctan.Processor(config=config)
try:
audio = np.zeros((config.num_channels, config.num_frames), dtype=np.float32)
enhanced = processor.process(audio)
finally:
processor.close()
Processor.process() accepts finite float32 samples in [-1.0, 1.0], shaped
as channels x frames. It returns a new float32 array with the same shape.
Mono and stereo input are supported. Stereo is returned as dual-mono stereo.
The sample rate must remain stable for the lifetime of a processor. If
num_frames is omitted, the SDK selects the native frame size. An explicit
num_frames must contain a whole number of native processing blocks.
Process concurrent streams
For concurrent streams in one worker, share one Model and create one
ProcessorAsync for each independent stream:
import asyncio
import numpy as np
import arctan
async def main() -> None:
model = arctan.Model()
configs = []
processors = []
try:
for _ in range(2):
config = arctan.ProcessorConfig.optimal(model)
configs.append(config)
processors.append(arctan.ProcessorAsync(model=model, config=config))
frames = [
np.zeros((config.num_channels, config.num_frames), dtype=np.float32)
for config in configs
]
enhanced = await asyncio.gather(
*(
processor.process_async(frame)
for processor, frame in zip(processors, frames)
)
)
print(len(enhanced))
finally:
for processor in processors:
processor.close()
model.close()
asyncio.run(main())
Use exactly one processor per call or audio stream. Keep frames ordered within
each processor. Different processors may execute concurrently, but calls on a
single ProcessorAsync are serialized. Close every processor before closing
its shared model.
LiveKit
Install the LiveKit integration:
pip install "arctan-vi[livekit]"
Pass an Arctan noise canceller to LiveKit audio input options:
from arctan.livekit import arctan_enhancer
from livekit.agents import room_io
await session.start(
agent=Assistant(),
room=ctx.room,
room_options=room_io.RoomOptions(
audio_input=room_io.AudioInputOptions(
noise_cancellation=arctan_enhancer.noise_canceller(),
),
),
)
Pass license_key= to noise_canceller() when the key is not provided through
ARCTAN_SDK_KEY. Create a separate noise-canceller instance for every
participant, call, or independent audio input.
Pipecat
Install the Pipecat integration:
pip install "arctan-vi[pipecat]"
Pass an Arctan audio filter to the transport:
from arctan.pipecat import arctan_enhancer
from pipecat.transports.base_transport import TransportParams
audio_filter = arctan_enhancer.ArctanAudioFilter()
transport_params = TransportParams(
audio_in_enabled=True,
audio_in_filter=audio_filter,
)
The Pipecat integration accepts mono PCM16 input and buffers arbitrary byte
chunks until a complete processing block is available. Create a separate
ArctanAudioFilter for every call or pipeline.
Metadata
Release files for arctan-vi 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 93.6 MB
Release files / arctan_vi-0.8.1-cp314-cp314-win_amd64.whl
| Download URL | arctan_vi-0.8.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
16797917abfdf689721fb06d6d3a60b4292845de41138e004ab11de46e1c7aee
|
|
BLAKE2b-256 checksum How to use checksums |
083ba437ee4a1e49ef7773bef85b98589632c9b9328798e96fac30993c5a97be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.2 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0250d4edf8bbd7e1a9cf485f68dad3e8e86fb70bf84dcc14788cbd50839632c2
|
|
BLAKE2b-256 checksum How to use checksums |
ce622d534f1bebbe395005a30245ad65c7bfb3340f362e77a583edc65b213a4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp313-cp313-win_amd64.whl
| Download URL | arctan_vi-0.8.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2aacd7de7e3ca625e484cc214431bfa3145157e749facc37dac74a8ebeb1488a
|
|
BLAKE2b-256 checksum How to use checksums |
ea30ad56caa1b34246bacfb0ad36b36ff5f560f2994c5740c8ef97b20d347d58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.2 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6f2800b7825048f9781407ed140fcfb5d12add271b9018c15cddcdb849965baa
|
|
BLAKE2b-256 checksum How to use checksums |
c24225617331c2a2228f8ad1fceb538b1550c5bd90eed6777bc98ffd904ec047
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp312-cp312-win_amd64.whl
| Download URL | arctan_vi-0.8.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6f8ae607ca9236b0a2e5c6bf96b4bb0ee0b00764e7eedd1bd6691de9d43ecfa8
|
|
BLAKE2b-256 checksum How to use checksums |
056a7a797f6f83a10d3dc771cf260842ea65a092df4429cbcf1d83bc2f617cfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.2 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
95236d7dc69b0e90b3e2e1810603b3c5585fd0a5dcf059cafab586ea9a07f279
|
|
BLAKE2b-256 checksum How to use checksums |
c3cbecc8a2230d186a9bcec2502cad1d6411846dcc99d12b042893cfa46800e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp311-cp311-win_amd64.whl
| Download URL | arctan_vi-0.8.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fea31b500328148433d450a918401a054a4d8e943154d6e7af60d5ac287f8fda
|
|
BLAKE2b-256 checksum How to use checksums |
70988199b6b85a0d625634d3f33f5af3910ef87f6b3d4250ec6781bc596056f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.2 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d2b369b52ca7cbb7b676cc6da58fb0fb492ef6531eb21c22198f31ab42f145b0
|
|
BLAKE2b-256 checksum How to use checksums |
0f4c507d8fa48e6d1cb277a04d7efda6969f0c37946caada98785c3dc7aca4a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp310-cp310-win_amd64.whl
| Download URL | arctan_vi-0.8.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1de568f0db92d57fdfd133da9d6bbff34227bca8980494e547994f03485cfa1d
|
|
BLAKE2b-256 checksum How to use checksums |
5776621dfc66325ab01c414d58a57eb0fa2c05aba2fc219c9a49ce4308e17336
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.2 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b0b4bd1ab6f8a1c81d9c326181322817de2a44d61fa883c56d1474458de11db9
|
|
BLAKE2b-256 checksum How to use checksums |
62ad7a96486e5a0b0b063e991726d7fb1689ea1a1f0b42109b597d35b9b012dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Security for arctan-vi 0.8.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.