From fc53810e148e23c26c05fc054b5f27d4f32fe852 Mon Sep 17 00:00:00 2001 From: chrys Date: Tue, 24 Oct 2017 05:10:15 +0200 Subject: [PATCH] add marry example --- play zone/marytts.py | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 play zone/marytts.py diff --git a/play zone/marytts.py b/play zone/marytts.py new file mode 100755 index 00000000..8cbffbc1 --- /dev/null +++ b/play zone/marytts.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# HTTP + URL packages +import httplib2 +from urllib.parse import urlencode, quote # For URL creation +import time +# To play wave files +import pygame +import math # For ceiling + + +# Mary server informations +mary_host = "127.0.0.1" +mary_port = "59125" + +# Input text +input_text = "das ist ein test das ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testd" +# Build the query +query_hash = {"INPUT_TEXT":input_text, + "INPUT_TYPE":"TEXT", # Input text + "LOCALE":"de", + "VOICE":"bits3", # Voice informations (need to be compatible) + "OUTPUT_TYPE":"AUDIO", + "AUDIO":"WAVE", # Audio informations (need both) + } +starttime = time.time() +query = urlencode(query_hash) +#print("query = \"http://%s:%s/process?%s\"" % (mary_host, mary_port, query)) + +# Run the query to mary http server +h_mary = httplib2.Http() +#print("http://%s:%s/process?" % (mary_host, mary_port), "POST", query) +resp, content = h_mary.request("http://%s:%s/process?" % (mary_host, mary_port), "POST", query) + +# Decode the wav file or raise an exception if no wav files +if (resp["content-type"] == "audio/x-wav"): + # Write the wav file + f = open("/tmp/output_wav.wav", "wb") + f.write(content) + f.close() + # Play the wav file + pygame.mixer.init(frequency=16000) # Initialise the mixer + #s = pygame.mixer.Sound(content) + s = pygame.mixer.Sound("/tmp/output_wav.wav") + print(str(time.time() -starttime)) + s.play() + print(str(time.time() -starttime)) + pygame.time.wait(int(math.ceil(s.get_length() * 1000))) + +else: + raise Exception(content)