To provide convenient Python program integration for https://docs.fish.audio.
pip install fish-audio-sdkInitialize 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")Sometimes, you may need to change our endpoint to another address. You can use
from fish_audio_sdk import Session
session = Session("your_api_key", base_url="https://your-proxy-domain")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())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",
)
],
)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())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())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())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())