$voices = [
'' => '',
__('Festival (en-US)') => 'festival:voice_cmu_us_slt_arctic_hts',
+ __('ReadSpeaker Sophie (en-US)') => 'readspeaker:Sophie/en_us',
+ __('ReadSpeaker Marc (en-US)') => 'readspeaker:Marc/en_us',
];
$this->fields['audiodescriptionTexts'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Contenus textuels pour l\'audiodescription'), 'fileFilter' => $seoFilter];
$replace = ['`' => "'",
'“' => '"',
'”' => '"',
- '’'=> "'",
- '—'=> " - ",
- ];
+ '’' => "'",
+ '—' => " - ",
+ '‘' => "'",
+ ];
$text = str_replace(array_keys($replace), array_values($replace), $text);
`lame $tmp $file`;
unlink($tmp);
unlink($tmptext);
+ } else if ($engine == 'readspeaker') {
+ $e = explode('/', $voice);
+ $this->_readSpeaker($text, $e[1], $e[0], $file);
}
}
}
}
+ protected function _readSpeaker($text, $language, $voice, $output)
+ {
+ $text_to_read = urlencode($text);
+ // Your API key here
+ $apikey = 'e9c321908f2dd016f6a0c34d2d786aff';
+
+ // File path and file name
+ $filepath = $output;
+
+ // API URL of text-to-speech enabler
+ $api_url = 'https://tts.readspeaker.com/a/speak';
+
+ // Compose API call url
+ $url = $api_url . '?key=' . $apikey . '&streaming=0&lang=' . $language . '&voice=' . $voice . '&text=' . $text_to_read;
+
+ // Initiating curl
+ $ch = curl_init($url);
+
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+
+ $data = curl_exec($ch);
+
+ $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+
+ if ($status == 200 && !curl_errno($ch)) {
+ // Everything is fine, close curl and save file
+ curl_close($ch);
+ file_put_contents($filepath, $data);
+ } else {
+ // Cannot translate text to speech because of text-to-speech API error
+ error_log(__FILE__ . ': API error while text-to-speech. error code=' . $status);
+ curl_close($ch);
+ }
+
+ }
+
protected function _writeIndex($page)
{
if (!isset($this->seo->pages[$page])) {