12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import logging
- import re
- import requests
- from core import AudioPlayer
- from tts import TTS
- logging.basicConfig()
- logger = logging.getLogger("kalliope")
- class Acapela(TTS):
- TTS_LANGUAGES_DEFAULT = 'sonid15'
- TTS_VOICE_DEFAULT = 'Manon'
- TTS_URL = "http://www.acapela-group.com/demo-tts/DemoHTML5Form_V2_fr.php"
- TTS_CONTENT_TYPE = "audio/mpeg"
- TTS_TIMEOUT_SEC = 30
- def __init__(self):
- TTS.__init__(self)
- def say(self, words=None, language=TTS_LANGUAGES_DEFAULT, voice=TTS_VOICE_DEFAULT, cache=True):
- self.say_generic(cache, language, words, self.get_audio_acapela, AudioPlayer.PLAYER_MP3, AudioPlayer.AUDIO_MP3_22050_FREQUENCY, voice)
- def get_audio_acapela(self, **kwargs):
- language = kwargs.get('language', None)
- words = kwargs.get('words', None)
- cache = kwargs.get('cache', None)
- file_path = kwargs.get('file_path', None)
- voice = kwargs.get('voice', None)
- payload = Acapela.get_payload(language, voice, words)
- url = Acapela.get_audio_link(self.TTS_URL, payload)
- return TTS.get_audio(file_path, cache, payload, url)
- @staticmethod
- def get_audio_link(url, payload, timeout_expected=30):
- r = requests.post(url, payload, timeout=timeout_expected)
- data = r.content
- return re.search("(?P<url>https?://[^\s]+).mp3", data).group(0)
- @staticmethod
- def get_payload(language, voice, words):
- return {
- "MyLanguages": language,
- "MySelectedVoice": voice,
- "MyTextForTTS": words,
- "t": "1",
- "SendToVaaS": ""
- }
|