Free, Unlimited Voice Changer API
On this page
This tutorial demonstrates how to use Puter.js to convert and clone voices for free, without requiring API keys or dealing with usage restrictions. With Puter.js, you can access powerful voice changer capabilities powered by ElevenLabs' multilingual voice conversion model, perfect for content creation, voice dubbing, and entertainment applications.
Puter is the pioneer of the "User-Pays" model, enabling developers to integrate AI-powered voice conversion into their apps while users cover their own usage costs. This approach lets you offer professional-grade voice changing features without managing API keys or backend infrastructure.
Getting Started
No API keys or account registration needed to use Puter.js. Simply add this script tag to your HTML file in either the <head> or <body> section:
<script src="https://js.puter.com/v2/"></script>
That's all the setup required to start converting voices with Puter.js!
Example 1: Basic Voice Conversion
To convert a voice from an audio file, use the puter.ai.speech2speech() function. Here's a complete working example:
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
puter.ai.speech2speech('https://assets.puter.site/example.mp3')
.then(audio => {
document.body.appendChild(audio);
audio.play();
});
</script>
</body>
</html>
Example 2: Upload and Convert Voice
Create an interactive interface that lets users upload audio files for instant voice conversion:
<html>
<body>
<input type="file" id="audio-upload" accept="audio/*">
<button id="convert-btn">Convert Voice</button>
<div id="audio-output"></div>
<script src="https://js.puter.com/v2/"></script>
<script>
document.getElementById('convert-btn').addEventListener('click', async () => {
const fileInput = document.getElementById('audio-upload');
const outputDiv = document.getElementById('audio-output');
if (!fileInput.files[0]) {
outputDiv.textContent = 'Please select an audio file first';
return;
<html>
<body>
<input type="file" id="audio-upload" accept="audio/*">
<button id="convert-btn">Convert Voice</button>
<div id="audio-output"></div>
<script src="https://js.puter.com/v2/"></script>
<script>
document.getElementById('convert-btn').addEventListener('click', async () => {
const fileInput = document.getElementById('audio-upload');
const outputDiv = document.getElementById('audio-output');
if (!fileInput.files[0]) {
outputDiv.textContent = 'Please select an audio file first';
return;<html>
<body>
<input type="file" id="audio-upload" accept="audio/*">
<button id="convert-btn">Convert Voice</button>
<div id="audio-output"></div>
<script src="https://js.puter.com/v2/"></script>
<script>
document.getElementById('convert-btn').addEventListener('click', async () => {
const fileInput = document.getElementById('audio-upload');
const outputDiv = document.getElementById('audio-output');
if (!fileInput.files[0]) {
outputDiv.textContent = 'Please select an audio file first';
return;
}
outputDiv.textContent = 'Converting voice...';
try {
const audio = await puter.ai.speech2speech(fileInput.files[0]);
outputDiv.innerHTML = '';
outputDiv.appendChild(audio);
audio.controls = true;
} catch (error) {
outputDiv.textContent = 'Error: ' + error.message;
}
});
</script>
</body>
</html>
Example 3: Convert to a Specific Voice
Specify a voice ID to convert audio to a particular voice:
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
const audio = await puter.ai.speech2speech({
audio: 'https://assets.puter.site/example.mp3',
voice: '21m00Tcm4TlvDq8ikWAM', // Rachel sample voice
});
document.body.appendChild(audio);
audio.controls = true;
audio.play();
})();
</script>
</body>
</html>
List of Voices
Here are the premade voice IDs you can use with the speech to speech API:
| Name | Voice ID | Gender | Age | Accent | Description | Use Case |
|---|---|---|---|---|---|---|
| Adam | pNInz6obpgDQGcFmaJgB |
male | middle aged | american | deep | narration |
| Alice | Xb7hH8MSUJpSbSDYk0k2 |
female | middle aged | british | confident | news |
| Antoni | ErXwobaYiN019PkySvjV |
male | young | american | well-rounded | narration |
| Arnold | VR6AewLTigWG4xSOukaG |
male | middle aged | american | crisp | narration |
| Bill | pqHfZKP75CvOlQylNhV4 |
male | middle aged | american | strong | documentary |
| Brian | nPczCjzI2devNBz1zQrb |
male | middle aged | american | deep | narration |
| Callum | N2lVS1w4EtoT3dr4eOWO |
male | middle aged | american | hoarse | video games |
| Charlie | IKne3meq5aSn9XLyUdCD |
male | middle aged | australian | casual | conversational |
| Charlotte | XB0fDUnXU5powFXDhCwa |
female | middle aged | english-swedish | seductive | video games |
| Chris | iP95p4xoKVk53GoZ742B |
male | middle aged | american | casual | conversational |
| Clyde | 2EiwWnXFnvU5JabPnv8n |
male | middle aged | american | war veteran | video games |
| Daniel | onwK4e9ZLuTAKqWW03F9 |
male | middle aged | british | deep | news presenter |
| Dave | CYw3kZ02Hs0563khs1Fj |
male | young | british-essex | conversational | video games |
| Domi | AZnzlk1XvdvUeBnXmlld |
female | young | american | strong | narration |
| Dorothy | ThT5KcBeYPX3keUQqHPh |
female | young | british | pleasant | children's stories |
| Drew | 29vD33N1CtxCmqQRPOHJ |
male | middle aged | american | well-rounded | news |
| Emily | LcfcDJNUP1GQjkzn1xUU |
female | young | american | calm | meditation |
| Ethan | g5CIjZEefAph4nQFvHAz |
male | young | american | — | ASMR |
| Fin | D38z5RcWu1voky8WS1ja |
male | old | irish | sailor | video games |
| Freya | jsCqWAovK2LkecY7zXl4 |
female | young | american | — | — |
| George | JBFqnCBsd6RMkjVDRZzb |
male | middle aged | british | raspy | narration |
| Gigi | jBpfuIE2acCO8z3wKNLl |
female | young | american | childish | animation |
| Giovanni | zcAOhNBS3c14rBihAFp1 |
male | young | english-italian | foreigner | audiobook |
| Glinda | z9fAnlkpzviPz146aGWa |
female | middle aged | american | witch | video games |
| Grace | oWAxZDx7w5VEj9dCyTzz |
female | young | american-southern | — | audiobook |
| Harry | SOYHLrjzK2X1ezoPC6cr |
male | young | american | anxious | video games |
| James | ZQe5CZNOzWyzPSCn5a3c |
male | old | australian | calm | news |
| Jeremy | bVMeCyTHy58xNoL34h3p |
male | young | american-irish | excited | narration |
| Jessie | t0jbNlBVZ17f02VDIeMI |
male | old | american | raspy | video games |
| Joseph | Zlb1dXrM653N07WRdFW3 |
male | middle aged | british | — | news |
| Josh | TxGEqnHWrfWFTfGW9XjX |
male | young | american | deep | narration |
| Liam | TX3LPaxmHKxFdv7VOQHJ |
male | young | american | — | narration |
| Lily | pFZP5JQG7iQjIQuC4Bku |
female | middle aged | british | raspy | narration |
| Matilda | XrExE9yKIg1WjnnlVkGX |
female | young | american | warm | audiobook |
| Michael | flq6f7yk4E4fJM5XTYuZ |
male | old | american | — | audiobook |
| Mimi | zrHiDhphv9ZnVXBqCLjz |
female | young | english-swedish | childish | animation |
| Nicole | piTKgcLEGmPE4e6mEKli |
female | young | american | whisper | audiobook |
| Patrick | ODq5zmih8GrVes37Dizd |
male | middle aged | american | shouty | video games |
| Paul | 5Q0t7uMcjvnagumLfvZi |
male | middle aged | american | ground reporter | news |
| Rachel | 21m00Tcm4TlvDq8ikWAM |
female | young | american | calm | narration |
| Sam | yoZ06aMxZJJ28mfd3POQ |
male | young | american | raspy | narration |
| Sarah | EXAVITQu4vr4xnSDxMaL |
female | young | american | soft | news |
| Serena | pMsXgVXv3BLzUgSXRplE |
female | middle aged | american | pleasant | interactive |
| Thomas | GBv7mTt0atIp3Br8iCZE |
male | young | american | calm | meditation |
| Santa Claus | knrPHWnBmmDHMoiMeP3l |
male | old | — | — | christmas |
Conclusion
That's it! You now have free, unlimited access to professional voice changing capabilities using Puter.js. Convert voices, clone audio, and remove background noise—all without API keys or backend servers.
Related
Free, Serverless AI and Cloud
Start creating powerful web applications with Puter.js in seconds!
Get Started Now