Convert Text to Speech with Local KOKORO SDK

## Disclaimer The **Execute Command** node is only supported on **self-hosted** (local) instances of n8n. ## Introduction ![1.jpg](fileId:1114) **KOKORO S** - Kokoro S is a compact yet powerful text-to-speech model, currently available on Hugging Face and GitHub. Despite its modest size—trained on less than 100 hours of audio—it delivers impressive results, consistently topping the S leaderboard on Hugging Face. Unlike larger systems, Kokoro S offers the advantage of running locally, even on devices without GPUs, making it accessible for a wide range of users. **Who will benefit from this integration?** This will be useful for video bloggers, TikTokers, and it will also enable the creation of a free voice chat bot. Currently, S models are mostly paid, but this integration will allow for fully free voice generation. The possibilities are limited only by your imagination. #### Note Unfortunately, we can't interact with the KOKORO API via browser URL (GET/POST), **but** we can run a Python script through n8n and pass any variables to it. In the tutorial, the D drive is used, but you can rewrite this for any paths, including the C drive. ## Step 1 You need to have Python installed. [link](https://github.com/PierrunoY/Kokoro-S-Local) Also, download and extract the portable version of KOKORO from GitHub. Create a file named voicegen.py with the following code in the KOKORO folder: (C:\KOKORO). As you can see, the output path is: (D:\output.mp3). ``` import sys import shutil from gradio_client import Client # Set UTF-8 encoding for stdout sys.stdout.reconfigure(encoding='utf-8') # Get arguments from command line text = sys.argv[1] # First argument: input text voice = sys.argv[2] # Second argument: voice speed = float(sys.argv[3]) # Third argument: speed (converted to float) print(f"Received text: {text}") print(f"Voice: {voice}") print(f"Speed: {speed}") # Connect to local Gradio server client = Client("http://localhost:7860/") # Generate speech using the API result = client.predict( text=text, voice=voice, speed=speed, api_name="/generate_speech" ) # Define output path output_path = r"D:\output.mp3" # Move the generated file shutil.move(result[1], output_path) # Print output path print(output_path) ``` ## Step 2 Go to n8n and create the following workflow. ![2.jpg](fileId:1111) ## Step 3 Edit Field Module. ``` { voice: "af_sarah", text: "Hello world!" } ``` ![33.jpg](fileId:1110) ## Step 4 We'll need an Execute Command module with the command: python ``` C:\KOKORO\voicegen.py "{{ $json.text }}" "{{ $json.voice }}" 1 ``` ![44.jpg](fileId:1112) ## Step 5 The script is already working, but to listen to it, you can connect a Binary module with the path to the generated MP3 file ``` D:/output.mp3 ``` ![55.jpg](fileId:1113) ## Step 6 Click “Next workflow” and enjoy the result. There are more voices and accents than in ChatGPT, plus it's free. ### P.S. If you want, there is a [detailed tutorial](https://blog.bswlife.site/2025/04/14/n8n-kokoro-tts-integration-setup/) on my blog.

n8n

Disclaimer

The Execute Command node is only supported on self-hosted (local) instances of n8n.

Introduction

1.jpg

KOKORO S - Kokoro S is a compact yet powerful text-to-speech model, currently available on Hugging Face and GitHub. Despite its modest size—trained on less than 100 hours of audio—it delivers impressive results, consistently topping the S leaderboard on Hugging Face. Unlike larger systems, Kokoro S offers the advantage of running locally, even on devices without GPUs, making it accessible for a wide range of users.

Who will benefit from this integration?

This will be useful for video bloggers, TikTokers, and it will also enable the creation of a free voice chat bot. Currently, S models are mostly paid, but this integration will allow for fully free voice generation. The possibilities are limited only by your imagination.

Note

Unfortunately, we can't interact with the KOKORO API via browser URL (GET/POST), but we can run a Python script through n8n and pass any variables to it.

In the tutorial, the D drive is used, but you can rewrite this for any paths, including the C drive.

Step 1

You need to have Python installed. link Also, download and extract the portable version of KOKORO from GitHub.

Create a file named voicegen.py with the following code in the KOKORO folder: (C:\KOKORO). As you can see, the output path is: (D:\output.mp3).

import sys
import shutil
from gradio_client import Client

# Set UTF-8 encoding for stdout
sys.stdout.reconfigure(encoding='utf-8')

# Get arguments from command line
text = sys.argv[1] # First argument: input text
voice = sys.argv[2] # Second argument: voice
speed = float(sys.argv[3]) # Third argument: speed (converted to float)

print(f"Received text: {text}")
print(f"Voice: {voice}")
print(f"Speed: {speed}")

# Connect to local Gradio server
client = Client("http://localhost:7860/")

# Generate speech using the API
result = client.predict(
    text=text,
    voice=voice,
    speed=speed,
    api_name="/generate_speech"
)

# Define output path
output_path = r"D:\output.mp3"

# Move the generated file
shutil.move(result[1], output_path)

# Print output path
print(output_path)

Step 2

Go to n8n and create the following workflow. 2.jpg

Step 3

Edit Field Module.

{  voice: "af_sarah",  text: "Hello world!"
}

33.jpg

Step 4

We'll need an Execute Command module with the command: python

C:\KOKORO\voicegen.py "{{ $json.text }}" "{{ $json.voice }}" 1

44.jpg

Step 5

The script is already working, but to listen to it, you can connect a Binary module with the path to the generated MP3 file

D:/output.mp3

55.jpg

Step 6

Click “Next workflow” and enjoy the result.

There are more voices and accents than in ChatGPT, plus it's free.

P.S.

If you want, there is a detailed tutorial on my blog.

$4.99
Last updated October 3, 2026
30-day money-back guarantee
Instant download
Lifetime updates included

New buyers can create an account from the cart to unlock a controlled $10 first-purchase credit on eligible orders of $25+.

Secure checkout powered by Stripe

Support

How to import this workflow into n8n

  1. 1Purchase or download the workflow to get the n8n workflow JSON file.
  2. 2In your n8n instance, open Workflows and choose "Import from File" (or paste the JSON with Ctrl+V on the canvas).
  3. 3Open each node marked with a credential warning and connect your own accounts and API keys.
  4. 4Run the workflow once manually to verify the data flow, then toggle it to Active.

Related AI workflows

Need this deployed? We'll set it up for you.

Our automation experts deploy this workflow in your stack, connect your accounts, and verify it works — or build a custom solution from scratch.