From 90b5a197420047d3d57b99e4a18e8e62bd1c8ad1 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Thu, 24 Jan 2019 17:45:30 +0000 Subject: [PATCH] wait #2475 @0:40 --- inc/ws/Metier/class.ws.book.parametres.php | 2 + .../html5/master/class.ws.html5.compiler.php | 47 +++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/inc/ws/Metier/class.ws.book.parametres.php b/inc/ws/Metier/class.ws.book.parametres.php index 268317a1b..8e6191236 100644 --- a/inc/ws/Metier/class.ws.book.parametres.php +++ b/inc/ws/Metier/class.ws.book.parametres.php @@ -402,6 +402,8 @@ class wsBookParametres extends wsParametres $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]; diff --git a/inc/ws/Util/html5/master/class.ws.html5.compiler.php b/inc/ws/Util/html5/master/class.ws.html5.compiler.php index 87b946ffa..2312a9f51 100644 --- a/inc/ws/Util/html5/master/class.ws.html5.compiler.php +++ b/inc/ws/Util/html5/master/class.ws.html5.compiler.php @@ -623,9 +623,10 @@ class wsHTML5Compiler $replace = ['`' => "'", '“' => '"', '”' => '"', - '’'=> "'", - '—'=> " - ", - ]; + '’' => "'", + '—' => " - ", + '‘' => "'", + ]; $text = str_replace(array_keys($replace), array_values($replace), $text); @@ -654,6 +655,9 @@ class wsHTML5Compiler `lame $tmp $file`; unlink($tmp); unlink($tmptext); + } else if ($engine == 'readspeaker') { + $e = explode('/', $voice); + $this->_readSpeaker($text, $e[1], $e[0], $file); } } @@ -662,6 +666,43 @@ class wsHTML5Compiler } } + 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])) { -- 2.39.5