Skip to main content

LiveKit Agents plugin for Arabic text-to-speech with Faseeh AI.

Project description

Faseeh Plugin for LiveKit Agents

PyPI version License

This plugin provides Arabic text-to-speech capabilities using Faseeh AI for LiveKit Agents.

Installation

From PyPI (once published)

pip install livekit-plugins-faseeh

From Source

git clone https://github.com/yourusername/livekit-plugins-faseeh.git
cd livekit-plugins-faseeh
pip install -e .

Quick Start

Basic Usage

from dotenv import load_dotenv
from livekit import agents
from livekit.agents import AgentServer, AgentSession, Agent
from livekit.plugins import silero, deepgram, openai, faseeh

load_dotenv()

class ArabicAssistant(Agent):
    def __init__(self) -> None:
        super().__init__(
            instructions="أنت مساعد صوتي ذكي يتحدث العربية."
        )

server = AgentServer()

@server.rtc_session()
async def my_agent(ctx: agents.JobContext):
    # Create Faseeh TTS instance
    faseeh_tts = faseeh.TTS(
        voice_id="ar-hijazi-female-2",
        model="faseeh-mini-v1-preview",
        stability=0.6,
    )

    session = AgentSession(
        stt=deepgram.STT(language="ar"),
        llm=openai.LLM(model="gpt-4o-mini"),
        tts=faseeh_tts,  # Use Faseeh for Arabic TTS
        vad=silero.VAD.load(),
    )

    await session.start(room=ctx.room, agent=ArabicAssistant())

    # Greet in Arabic
    await session.generate_reply(
        instructions="رحب بالمستخدم وقدم المساعدة."
    )

if __name__ == "__main__":
    agents.cli.run_app(server)

Run the Agent

# Set environment variables
export FASEEH_API_KEY=your-api-key
export OPENAI_API_KEY=your-openai-key

# Run in development mode
python agent.py dev

See the examples/ directory for more complete examples including bilingual support, noise cancellation, and dynamic voice switching.

Configuration

Environment Variables

Set your Faseeh API key:

export FASEEH_API_KEY=your_api_key_here

TTS Options

The TTS class accepts the following parameters:

  • voice_id (str): Voice ID to use. Default: "ar-hijazi-female-2"
  • model (str): Model to use. Options:
    • "faseeh-v1-preview" - Full model
    • "faseeh-mini-v1-preview" - Faster, lighter model (default)
  • stability (float): Voice stability from 0.0 to 1.0. Higher values produce more consistent output. Default: 0.5
  • api_key (str, optional): API key. If not provided, uses FASEEH_API_KEY environment variable
  • base_url (str, optional): Custom API base URL
  • http_session (aiohttp.ClientSession, optional): Custom HTTP session

Update Options

You can update TTS options dynamically:

faseeh_tts.update_options(
    voice_id="ar-hijazi-female-2",
    model="faseeh-v1-preview",
    stability=0.7,
)

Streaming Mode

For real-time applications, use streaming mode:

# Create streaming instance
stream = faseeh_tts.stream()

# Push text incrementally
stream.push_text("مرحبا ")
stream.push_text("كيف حالك")

# Flush and end input
stream.flush()
stream.end_input()

# Receive audio chunks as they're generated
async for event in stream:
    # Process audio frames in real-time
    if hasattr(event, "frame"):
        audio_frame = event.frame

Features

  • ✅ Arabic text-to-speech synthesis
  • ✅ Multiple voice options
  • ✅ Adjustable voice stability
  • ✅ Two model options (standard and mini)
  • ✅ 24kHz PCM16 audio output
  • ✅ Both streaming and non-streaming modes
  • ✅ Low-latency streaming for real-time applications

Models

Model Description
faseeh-v1-preview Full-featured model with highest quality
faseeh-mini-v1-preview Faster, lighter model for low-latency applications

Error Handling

The plugin handles the following error codes:

  • 400: Bad request (invalid parameters)
  • 401: Unauthorized (invalid API key)
  • 402: Payment required (insufficient wallet balance)
  • 403: Forbidden (model not enabled for account)
  • 404: Model or voice not found
  • 429: Rate limit exceeded

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Support

For issues or questions:

Acknowledgments

License

Apache License 2.0 - see LICENSE file for details

Project details


Download files

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

Source Distribution

livekit_plugins_faseeh-0.1.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

livekit_plugins_faseeh-0.1.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file livekit_plugins_faseeh-0.1.0.tar.gz.

File metadata

  • Download URL: livekit_plugins_faseeh-0.1.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for livekit_plugins_faseeh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 43875233850198b472ca80f3b626abad1df712a91e10dc95b2a9303590a662fa
MD5 3f891c995bde87bd14ffa67e27efbe92
BLAKE2b-256 cdab909ccc6f222fc2463c3c96128a4c2df1cd8d449f18d4c7367f803eb8c8b5

See more details on using hashes here.

File details

Details for the file livekit_plugins_faseeh-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for livekit_plugins_faseeh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fb0f1f9152dc1858be28eae21a274fadaefbb75df57cf91037111ea7fa3e660
MD5 80e6f5d69854c096ed81b3be9d35f7d9
BLAKE2b-256 c7873e77f1132bc226e7d5e15024e0740a0ad66d862adb6972d8389836b61ae3

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