1. Go to this page and download the library: Download afaya/edge-tts library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
afaya / edge-tts example snippets
faya\EdgeTTS\Service\EdgeTTS;
// Initialize the EdgeTTS service
$tts = new EdgeTTS();
$ssml = `
<speak version="1.0"
xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts"
xml:lang="es-CO">
<voice name="es-CO-GonzaloNeural">
<mstts:express-as style="narration-professional">
<prosody rate="+5%" pitch="+10Hz" volume="+0%">
Hola, este es un ejemplo de <emphasis>SSML</emphasis>.
<break time="400ms" />
El número es <say-as interpret-as="cardinal">2025</say-as>.
La palabra se pronuncia
<phoneme alphabet="ipa" ph="ˈxola">hola</phoneme>.
</prosody>
</mstts:express-as>
</voice>
</speak>`;
// Auto-detects SSML, or force it with inputType: 'ssml'
// Synthesize text with options for voice, rate, volume, and pitch
$tts->synthesize($ssml);
// Export synthesized audio in different formats
$base64Audio = $tts->toBase64(); // Get audio as base64
$tts->toFile("output"); // Save audio to file
$rawAudio = $tts->toRaw(); // Get raw audio stream
faya\EdgeTTS\Service\EdgeTTS;
// Initialize the EdgeTTS service
$tts = new EdgeTTS();
// Get available voices
$voices = $tts->getVoices();
// var_dump($voices); // array -> use ShortName with the voice name
// Synthesize text with options for voice, rate, volume, and pitch
$tts->synthesize("Hello, world!", 'en-US-AriaNeural', [
'rate' => '0%', // Speech rate (range: -100% to 100%)
'volume' => '0%', // Speech volume (range: -100% to 100%)
'pitch' => '0Hz' // Voice pitch (range: -100Hz to 100Hz)
]);
// Export synthesized audio in different formats
$base64Audio = $tts->toBase64(); // Get audio as base64
$tts->toFile("output"); // Save audio to file
$rawAudio = $tts->toRaw(); // Get raw audio stream
$tts->synthesizeStream(
"Your text here",
'en-US-AriaNeural',
['rate' => '10%'],
function($chunk) {
// Process each audio chunk in real-time
echo "Received chunk of " . strlen($chunk) . " bytes\n";
// You can stream this directly to output, save incrementally, etc.
}
);
// Get basic audio information
$info = $tts->getAudioInfo();
// Returns: ['size' => bytes, 'format' => 'mp3', 'estimatedDuration' => seconds]
// Get estimated duration
$duration = $tts->getDuration();
// Get size in bytes
$size = $tts->getSizeBytes();
// Get word boundaries with timestamps
$boundaries = $tts->getWordBoundaries();
// Save metadata to file
$tts->saveMetadata('metadata.json');
// Get all available voices
$voices = $tts->getVoices();
// Each voice contains information like:
// - ShortName: The voice identifier to use in synthesis
// - DisplayName: Human-readable voice name
// - LocalName: Localized voice name
// - Gender: Voice gender
// - Locale: Language/region code