Skip to main content

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)

Table of built distributions (wheels) for arctan-vi 0.8.1
File
arctan_vi-0.8.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
arctan_vi-0.8.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
arctan_vi-0.8.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
arctan_vi-0.8.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
arctan_vi-0.8.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details

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.

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