Skip to main content

Arctan Voice Isolation for voice agents

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

arctan_vi-0.8.1-cp314-cp314-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.14Windows x86-64

arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

arctan_vi-0.8.1-cp313-cp313-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.13Windows x86-64

arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

arctan_vi-0.8.1-cp312-cp312-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.12Windows x86-64

arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

arctan_vi-0.8.1-cp311-cp311-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.11Windows x86-64

arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

arctan_vi-0.8.1-cp310-cp310-win_amd64.whl (8.6 MB view details)

Uploaded CPython 3.10Windows x86-64

arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl (10.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

Details for the file arctan_vi-0.8.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: arctan_vi-0.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for arctan_vi-0.8.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 16797917abfdf689721fb06d6d3a60b4292845de41138e004ab11de46e1c7aee
MD5 5253881d065dea202c4bf045c6b1280d
BLAKE2b-256 083ba437ee4a1e49ef7773bef85b98589632c9b9328798e96fac30993c5a97be

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arctan_vi-0.8.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0250d4edf8bbd7e1a9cf485f68dad3e8e86fb70bf84dcc14788cbd50839632c2
MD5 8cc5dd522c4e3e9e01d9f78369800d54
BLAKE2b-256 ce622d534f1bebbe395005a30245ad65c7bfb3340f362e77a583edc65b213a4d

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: arctan_vi-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for arctan_vi-0.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2aacd7de7e3ca625e484cc214431bfa3145157e749facc37dac74a8ebeb1488a
MD5 2e2ba2b1bf55f2f11d07a492ea8d0e90
BLAKE2b-256 ea30ad56caa1b34246bacfb0ad36b36ff5f560f2994c5740c8ef97b20d347d58

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arctan_vi-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f2800b7825048f9781407ed140fcfb5d12add271b9018c15cddcdb849965baa
MD5 b51284a09c491fefd1f7f2ae9abe2076
BLAKE2b-256 c24225617331c2a2228f8ad1fceb538b1550c5bd90eed6777bc98ffd904ec047

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: arctan_vi-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for arctan_vi-0.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6f8ae607ca9236b0a2e5c6bf96b4bb0ee0b00764e7eedd1bd6691de9d43ecfa8
MD5 abc0fe721aff47890ea19cd073e7afb4
BLAKE2b-256 056a7a797f6f83a10d3dc771cf260842ea65a092df4429cbcf1d83bc2f617cfe

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arctan_vi-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95236d7dc69b0e90b3e2e1810603b3c5585fd0a5dcf059cafab586ea9a07f279
MD5 f7d3f0b8f0a290ec41dc490b3e7b3139
BLAKE2b-256 c3cbecc8a2230d186a9bcec2502cad1d6411846dcc99d12b042893cfa46800e6

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: arctan_vi-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for arctan_vi-0.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fea31b500328148433d450a918401a054a4d8e943154d6e7af60d5ac287f8fda
MD5 e8a7d2fce501f43529a80c330d714103
BLAKE2b-256 70988199b6b85a0d625634d3f33f5af3910ef87f6b3d4250ec6781bc596056f9

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arctan_vi-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2b369b52ca7cbb7b676cc6da58fb0fb492ef6531eb21c22198f31ab42f145b0
MD5 472144f3b01be7f34646cfb36e7d6007
BLAKE2b-256 0f4c507d8fa48e6d1cb277a04d7efda6969f0c37946caada98785c3dc7aca4a6

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: arctan_vi-0.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for arctan_vi-0.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1de568f0db92d57fdfd133da9d6bbff34227bca8980494e547994f03485cfa1d
MD5 b06447ea34738234b955cab12f9a5a10
BLAKE2b-256 5776621dfc66325ab01c414d58a57eb0fa2c05aba2fc219c9a49ce4308e17336

See more details on using hashes here.

File details

Details for the file arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arctan_vi-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0b4bd1ab6f8a1c81d9c326181322817de2a44d61fa883c56d1474458de11db9
MD5 0a652ba680007c34b32f018bb192d036
BLAKE2b-256 62ad7a96486e5a0b0b063e991726d7fb1689ea1a1f0b42109b597d35b9b012dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page