Parcourir la source

Remove unecessary verification

Unknown il y a 8 ans
Parent
commit
c2be6662b7
3 fichiers modifiés avec 83 ajouts et 0 suppressions
  1. 1 0
      tts/acapela/__init__.py
  2. 81 0
      tts/acapela/acapela.py
  3. 1 0
      tts/pico2wave/pico2wave.py

+ 1 - 0
tts/acapela/__init__.py

@@ -0,0 +1 @@
+from voxygen import *

+ 81 - 0
tts/acapela/acapela.py

@@ -0,0 +1,81 @@
+import sha
+import os
+import shutil
+
+import pygame
+import requests
+import logging
+
+VOXYGEN_LANGUAGES = {
+    "fr" : {"electra":"Electra","emma":"Emma","becool":"Becool","agnes":"Agnes","loic":"Loic","fabienne":"Fabienne","helene":"Helene","marion":"Marion","matteo":"Matteo","melodine":"Melodine","mendoo":"Mendoo","michel":"Michel","moussa":"Moussa","philippe":"Philippe","sorciere":"Sorciere"},
+    "ar" : {"adel":"Adel"},
+    "de" : {"matthias":"Matthias","jylvia":"Sylvia"},
+    "uk" : {"bronwen":"Bronwen","elizabeth":"elizabeth","judith":"Judith","paul":"Paul","witch":"Witch"},
+    "us" : {"bruce":"Bruce","jenny":"Jenny"},
+    "es" : {"martha":"Martha"},
+    "it" : {"sonia":"Sonia"}
+}
+
+CACHE_PATH = "/tmp/jarvis/tts/acapela/"
+
+def say(words=None, voice=None, language=None, cache=None):
+
+    if not os.path.exists(CACHE_PATH):
+        os.makedirs(CACHE_PATH)
+
+    sha1 = sha.new(words).hexdigest()
+
+    tempfile = CACHE_PATH+voice+"."+sha1+".tts"
+
+    get_audio(voice,words,tempfile,cache)
+
+    play_audio(tempfile)
+
+    if not cache:
+        os.remove(tempfile)
+
+def get_audio(voice, text, filepath,cache):
+    if not cache or not os.path.exists(filepath):
+        payload ={
+            "method" : "redirect",
+            "text" : text.encode('utf8'),
+            "voice" : voice
+        }
+
+        r = requests.get("http://www.acapela-group.com/demo-tts/DemoHTML5Form_V2_fr.php", params=payload, stream=True)
+        logging.debug("Trying to get url: %s response code: %s",r.url,r.status_code)
+
+        if r.status_code==200:
+            with open(os.path.abspath(filepath), "wb") as sound_file:
+                sound_file.write(r.content)
+
+def play_audio(music_file, volume=0.8):
+    pygame.mixer.init(16000, -16, 1, 2048)
+    pygame.mixer.music.set_volume(volume)
+    clock = pygame.time.Clock()
+    try:
+        pygame.mixer.music.load(music_file)
+        logging.debug("Music file {} loaded!".format(music_file))
+    except pygame.error:
+        os.remove(music_file)
+        logging.debug("File {} not found! ({})".format(music_file, pygame.get_error()))
+        return
+    pygame.mixer.music.play()
+    while pygame.mixer.music.get_busy():
+        clock.tick(10)
+
+def get_voice(voice=None, language=None):
+    if language in VOXYGEN_LANGUAGES:
+        if voice in VOXYGEN_LANGUAGES[language]:
+            return VOXYGEN_LANGUAGES[language][voice]
+
+    logging.debug("Cannot find language maching language: %s voice: %s",language,voice)
+    return ""
+
+def wipe_cache():
+    shutil.rmtree(CACHE_PATH)
+
+
+import sys
+logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
+say("Bonjour monsieur",get_voice("loic","fr"),None,True)

+ 1 - 0
tts/pico2wave/pico2wave.py

@@ -29,3 +29,4 @@ class Pico2wave(TTS):
         subprocess.check_output(["/usr/bin/pico2wave", "-l=%s" % language, "-w=%s" % file_path, words], stderr=sys.stderr)
 
 
+# logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)