Skip to main content

A python SDK for the Neuphonic TTS Engine.

Project description

PyNeuphonic

The official Neuphonic Python library providing simple, convenient access to the Neuphonic text-to-speech websocket API from any Python 3.9+ application.

For support or to get involved, join our Discord!

Documentation

See https://docs.neuphonic.com for the complete API documentation.

Installation

Install this package into your environment using your chosen package manager:

pip install pyneuphonic

List Voices

from pyneuphonic import Neuphonic
import os

client = Neuphonic(api_key=os.environ.get('NEUPHONIC_API_TOKEN'))
voices = client.voices.get()  # get's all available voices
print(voices)

Audio Generation

SSE (Server Side Events)

from pyneuphonic import Neuphonic, AudioPlayer, TTSConfig
import os
import time

client = Neuphonic(api_key=os.environ.get('NEUPHONIC_API_TOKEN'))

sse = client.tts.SSEClient()

# TTSConfig is a pydantic model so check out the source code for all valid options
tts_config = TTSConfig(speed=1.05)

# Create an audio player with `pyaudio`
with AudioPlayer() as player:
    response = sse.send('Hello, world!', tts_config=tts_config)

    for item in response:
        player.play(item.data.audio)

    time.sleep(1)  # ensure all audio has played

Asynchronous SSE

from pyneuphonic import Neuphonic, AudioPlayer, TTSConfig
import os
import asyncio

async def main():
    client = Neuphonic(api_key=os.environ.get('NEUPHONIC_API_TOKEN'))

    sse = client.tts.AsyncSSEClient()
    tts_config = TTSConfig(speed=1.05)

    with AudioPlayer() as player:
        response = sse.send('Hello, world!', tts_config=tts_config)

        async for item in response:
            player.play(item.data.audio)

        await asyncio.sleep(1)

asyncio.run(main())

Asynchronous Websocket

from pyneuphonic import Neuphonic, AudioPlayer, TTSConfig, WebsocketEvents
from pyneuphonic.models import WebsocketResponse
import os
import asyncio

async def main():
    client = Neuphonic(api_key=os.environ.get('NEUPHONIC_API_TOKEN'))

    ws = client.tts.AsyncWebsocketClient()
    tts_config = TTSConfig(voice='ebf2c88e-e69d-4eeb-9b9b-9f3a648787a5')

    player = AudioPlayer()
    player.open()

    # Attach event handlers. Check WebsocketEvents enum for all valid events.
    async def on_message(message: WebsocketResponse):
        player.play(message.data.audio)

    async def on_close():
        player.close()

    ws.on(WebsocketEvents.MESSAGE, on_message)
    ws.on(WebsocketEvents.CLOSE, on_close)

    await ws.open(tts_config=tts_config)

    # A special symbol ' <STOP>' must be sent to the server, otherwise the server will wait for
    # more text to be sent before generating the last few snippets of audio
    await ws.send('Hello, world!', autocomplete=True)
    await ws.send('Hello, world! <STOP>')  # Both the above line, and this line, are equivalent

    await asyncio.sleep(3)  # let the audio play
    await ws.close()  # close the websocket and terminate the audio resources

asyncio.run(main())

Example Applications

Check out the snippets folder for some example applications.

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

pyneuphonic-1.1.2.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

pyneuphonic-1.1.2-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file pyneuphonic-1.1.2.tar.gz.

File metadata

  • Download URL: pyneuphonic-1.1.2.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Darwin/23.4.0

File hashes

Hashes for pyneuphonic-1.1.2.tar.gz
Algorithm Hash digest
SHA256 4b7905b1ebc4d22274818534a9f2491e0a268bfd6214aebdc7097967cb442f92
MD5 e9bfd4f15245b4d8ca63174d6babc4fc
BLAKE2b-256 8e1705896cec9efcab228a2f72b9fe9b705204bc46fb67dc07f5d837a677804d

See more details on using hashes here.

File details

Details for the file pyneuphonic-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: pyneuphonic-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Darwin/23.4.0

File hashes

Hashes for pyneuphonic-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 16752ce75f6d972a45e33a33e86d1e73937c2f75652d2faef2dc179099c991c2
MD5 c1544901d795eecef850fa6e0ff44375
BLAKE2b-256 d0cda2895f38332277c17cc99dba277e522a6bc9cc2c511461c83c2256fdcd6d

See more details on using hashes here.

Supported by

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