Skip to content

fishaudio/fish-audio-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fish Audio Python SDK

To provide convenient Python program integration for https://docs.fish.audio.

Install

pip install fish-audio-sdk

Usage

Initialize a Session to use APIs. All APIs have synchronous and asynchronous versions. If you want to use the asynchronous version of the API, you only need to rewrite the original session.api_call(...) to session.api_call.awaitable(...).

from fish_audio_sdk import Session

session = Session("your_api_key")

Text to speech

from fish_audio_sdk import Session, TTSRequest

session = Session("your_api_key")

with open("r.mp3", "wb") as f:
    for chunk in session.tts(TTSRequest(text="Hello, world!")):
        f.write(chunk)

Or use async version:

import asyncio
import aiofiles

from fish_audio_sdk import Session, TTSRequest

session = Session("your_api_key")


async def main():
    async with aiofiles.open("r.mp3", "wb") as f:
        async for chunk in session.tts.awaitable(
            TTSRequest(text="Hello, world!"),
        ):
            await f.write(chunk)


asyncio.run(main())

Reference Audio

from fish_audio_sdk import TTSRequest

TTSRequest(
    text="Hello, world!",
    reference_id="your_model_id",
)

Or just use ReferenceAudio in TTSRequest:

from fish_audio_sdk import TTSRequest, ReferenceAudio

TTSRequest(
    text="Hello, world!",
    references=[
        ReferenceAudio(
            audio=audio_file.read(),
            text="reference audio text",
        )
    ],
)

List models

models = session.list_models()
print(models)

Or use async version:

import asyncio


async def main():
    models = await session.list_models.awaitable()
    print(models)


asyncio.run(main())

Get a model info by id

model = session.get_model("your_model_id")
print(model)

Or use async version:

import asyncio


async def main():
    model = await session.get_model.awaitable("your_model_id")
    print(model)


asyncio.run(main())

Create a model

model = session.create_model(
    title="test",
    description="test",
    voices=[voice_file.read(), other_voice_file.read()],
    cover_image=image_file.read(),
)
print(model)

Or use async version:

import asyncio


async def main():
    model = await session.create_model.awaitable(
        title="test",
        description="test",
        voices=[voice_file.read(), other_voice_file.read()],
        cover_image=image_file.read(),
    )
    print(model)


asyncio.run(main())

Delete a model

session.delete_model("your_model_id")

Or use async version:

import asyncio


async def main():
    await session.delete_model.awaitable("your_model_id")


asyncio.run(main())