Laravel Text to speech converter is transforming the text into artificial human speech. Convert text into corresponding language speech. You can download that audio speech and play the audio speech.
The following steps for creating text to speech converter.
-
Create a laravel project using composer
Laravel new text-to-speech-converter
-
Create an account in VoiceRSS and get your API key from VoiceRSS
Registration URL of VoiceRSS is http://www.voicerss.org
Voice RSS Registration
After Register in VoiceRSS, log in using your email address and password.
Login URL is http://www.voicerss.org/login.aspx.
Voice RSS Login
After Login get your API key. http://www.voicerss.org/personel/default.aspx link for getting your API key
-
Set Your API Key In The Environment File
Open you .env file add your API key for Voice RSS.
Ex. VOICE_RSS_API_KEY=your_api_key
-
Filesystem Configuration
In config/filesystems.php add following code for creating speeches disk on which all audio files will be saved.
'disks' => [ … 'speeches' => [ 'driver' => 'local', 'root' => storage_path('app/public/speeches'), ], ... ],
Create A Library For VoiceRSS
Create Library folder inside App Folder. Download VoiceRSS SDK for from http://www.voicerss.org/downloads/voicerss_tts_php.zip. Extract zip and put the voicerss_tts.php file inside App\Library folder and rename to VoiceRss.php.
Create Text To Speech Convert Form
Make a form which takes text and textual content language ( In which language you have written text ).
Create A Controller Which Convert Text Into Speech
use App\Library\VoiceRSS; … try { $tts = new VoiceRSS; $voice = $tts->speech([ 'key' => env('VOICE_RSS_API_KEY'), 'hl' => $request->lan, 'src' => $request->text, 'r' => '0', 'c' => 'mp3', 'f' => '44khz_16bit_stereo', 'ssml' => 'false', 'b64' => 'false' ]); $filename = Str::uuid().'.mp3'; if( empty($voice["error"]) ) { $rawData = $voice["response"]; if (!File::exists(storage_path('app/public/speeches'))) { Storage::makeDirectory(public_path('storage/speeches')); } Storage::disk('speeches')->put($filename, $rawData); $speechFilelink = asset('storage/speeches/'.$filename); $urls["play-url"] = $speechFilelink; $urls["download-file"] = $filename; $data = array('status' => 200, 'responseText' => $urls); return response()->json($data); } $data = array('status' => 400, 'responseText' => "Please try again!"); return response()->json($data); } catch (SitemapParserException $e) { $data = array('status' => 400, 'responseText' => $e->getMessage()); return response()->json($data); }
Using voiceRss Library create the VoiceRSS instance( $tts = new VoiceRSS ). Using this instance generate speech. Pass variables key, hl, src, r, c, f, ssml, and b64 as array format.
key* |
Your API key, which is store at ENV file. |
hl* |
Written textual content language |
src* |
Your textual content (length limited – 100KB). |
r |
Speech Rate from -10 (slowest speed) up to 10 (fastest speed). The default value is 0 (normal speed). |
c |
Speech audio code. The default value is WAV. |
f |
Speech audio formats. The default value is 8khz_8bit_mono. |
ssml |
SSML textual content format. Either true or false. The default value is false |
b64 |
Defines output as a Base64 string format. Either true or false. The default value is false. |
(*) fields are mandatory, other fields are optional.
-
Support Language (hl)
Catalan, Chinese (China), Chinese (Hong Kong), Chinese (Taiwan), Danish, Dutch, English (Australia), English (Canada), English (Great Britain), English (India), English (United States), Finnish, French (Canada), French (France), German, Italian, Japanese, Korean, Norwegian, Polish, Portuguese (Brazil), Portuguese (Portugal), Russian, Spanish (Mexico), Spanish (Spain), Swedish (Sweden)
-
Support Audio Code (c)
MP3, WAV, AAC, OGG, CAF
-
Support Audio Formats
(8 kHz, 8 Bit, Mono), (8 kHz, 8 Bit, Stereo), (8 kHz, 16 Bit, Mono), (8 kHz, 16 Bit, Stereo), (11 kHz, 8 Bit, Mono), (11 kHz, 8 Bit, Stereo),(11 kHz, 16 Bit, Mono), (11 kHz, 16 Bit, Stereo), (12 kHz, 8 Bit, Mono), (12 kHz, 8 Bit, Stereo), (12 kHz, 16 Bit, Mono), (12 kHz, 16 Bit, Stereo), (16 kHz, 8 Bit, Mono), (16 kHz, 8 Bit, Stereo), (16 kHz, 16 Bit, Mono), (16 kHz, 16 Bit, Stereo), (22 kHz, 8 Bit, Mono), (22 kHz, 8 Bit, Stereo), (22 kHz, 16 Bit, Mono), (22 kHz, 16 Bit, Stereo), (24 kHz, 8 Bit, Mono), (24 kHz, 8 Bit, Stereo), (24 kHz, 16 Bit, Mono), (24 kHz, 16 Bit, Stereo)
(32 kHz, 8 Bit, Mono), (32 kHz, 8 Bit, Stereo), (32 kHz, 16 Bit, Mono), (32 kHz, 16 Bit, Stereo), (44 kHz, 8 Bit, Mono), (44 kHz, 8 Bit, Stereo), (44 kHz, 16 Bit, Mono), (44 kHz, 16 Bit, Stereo), (48 kHz, 8 Bit, Mono), (48 kHz, 8 Bit, Stereo), (48 kHz, 16 Bit, Mono), (48 kHz, 16 Bit, Stereo), (ALaw, 8 kHz, Mono), (ALaw, 8 kHz, Stereo), (ALaw, 11 kHz, Mono), (ALaw, 11 kHz, Stereo), (ALaw, 22 kHz, Mono), (ALaw, 22 kHz, Stereo), (ALaw, 44 kHz, Mono), (ALaw, 44 kHz, Stereo), (uLaw, 8 kHz, Mono), (uLaw, 8 kHz, Stereo), (uLaw, 11 kHz, Mono), (uLaw, 11 kHz, Stereo), (uLaw, 22 kHz, Mono), (uLaw, 22 kHz, Stereo), (uLaw, 44 kHz, Mono), (uLaw, 44 kHz, Stereo)
Here you go
Speech instance returns result as an array format. From this array gets errors and response. If successfully convert text into speech error field is empty. For storing the audio file inside the storage check speeches folder is exist or not. If speech folder does not exist inside your storage, create that folder and store speech file as MP3 format. Download and play an audio file using that storage link.
VoiceRSS Document
VoiceRss Document link is http://www.voicerss.org/api/documentation.aspx to know more about VoiceRSS. There are many service providers available to convert text into speech, likewise Acapela, AmazonPolly, Google, Picotts, ResponsiveVoice, Voice RSS, etc.
From the above steps, you can create a text to speech interface easily. If you have any questions or feedback feel free to add a comment below this content. Thanks for reading this article. I hope you enjoy this topic.
As a result we have Github repo as usual, Enjoy It.