You can use neets.ai's Text-To-Speech (TTS) API for tasks that generate large amounts of audio, such as rendering an audiobook from raw text. In this example, we'll load text from a book, and run inference in parallel using the API to produce a result
Prerequisites:
- Python installation: Ensure you have Python version 3.8 or newer installed on your computer to run the code effectively..
- Book as a text file: Make sure to have your desired book as a text file. You can prepare your book as a text file by doing the following in shell:
wget -O alice.txt https://gutenberg.org/cache/epub/11/pg11.txt
Setting Up:
- Open your terminal: Launch your terminal and navigate to your desired directory where you want to set up the project.
- Install Python dependencies: You need to install two Python packages. Execute the following commands in your terminal:
pip install requests
pip install requests tqdm
Creating Your Script
- Code preparation: Open your desired code editor. Copy and paste the code provided from our API documentation below:
from concurrent.futures import ThreadPoolExecutor
import pathlib
import requests
from tqdm import tqdm
NEETS_API_KEY="your_api_key"
def chunk(parts: list[str], n: int):
chunks = []
chunk = ""
for sentence in parts:
chunk += sentence
if len(chunk) > n:
chunks.append(chunk + " ")
chunk = ""
if len(chunk) > 0:
chunks.append(chunk)
return chunks
def generate_audio(
api_key: str,
book_path: str,
output_path: str,
chunk_size: int = 500,
):
output_p = pathlib.Path(output_path)
output_p.mkdir(parents=True, exist_ok=True)
book_text = open(book_path, "r")
sentences = book_text.read().replace("\n", " ").replace("\r", "").split(".")
trimmed_sentences = [sentence.strip() + "." for sentence in sentences]
chunks = chunk(trimmed_sentences, chunk_size)
def generate_chunk_audio(chunk: tuple[int, str]):
index, text = chunk
filename = f"{str(index).zfill(4)}.mp3"
response = requests.request(
method="POST",
url="https://api.neets.ai/v1/tts",
headers={
"Content-Type": "application/json",
"X-API-Key": api_key
},
json={
"text": text,
"voice_id": "us-female-2",
"params": {
"model": "style-diff-500"
}
}
)
# Check API status
response.raise_for_status()
(output_p / filename).write_bytes(response.content)
with ThreadPoolExecutor(max_workers=5) as executor:
list(
tqdm(
executor.map(generate_chunk_audio, enumerate(chunks)),
desc="Generating audio",
total=len(chunks)
)
)
generate_audio(
api_key=NEETS_API_KEY,
book_path="alice.txt",
output_path="alice_audio",
chunk_size=500
)
- Save your script: Ensure you save the file with a clear name. For example:
audiobook.py
Running Your Script
- Execute the script: In your terminal, run the script using the command
python audiobook.py
- Enter your API Key: When prompted, enter your
NEETS_API_KEY
. You can find this on your API Keys page here.
Now you're all set! Follow these steps for tasks requiring generation of large amounts of audio using neets.ai's easy-to-use APIs