Revision e21d7f2c
tts_bridge/mary/mary_tts_bridge/MaryTTSBridge.py | ||
---|---|---|
34 | 34 |
import actionlib |
35 | 35 |
from io import BytesIO |
36 | 36 |
import wave |
37 |
import os |
|
38 |
import pkgutil |
|
37 | 39 |
from MaryTTSClient import * |
38 | 40 |
from cStringIO import StringIO |
39 | 41 |
|
... | ... | |
116 | 118 |
for line in sio: |
117 | 119 |
if (line[0] != '#'): |
118 | 120 |
phoneme_list = line.split(" ") |
119 |
symbol = phoneme_list[2] |
|
120 |
symbol = symbol.rstrip() |
|
121 |
|
|
122 |
now = float(phoneme_list[0]) |
|
123 |
duration = (now - last)*1000 |
|
124 |
last = now |
|
125 |
plist.append(phoneme(symbol, int(duration))) |
|
121 |
if (line == '\n'): |
|
122 |
#ignore empty lines |
|
123 |
continue |
|
124 |
elif (len(phoneme_list) != 3): |
|
125 |
print("> could not split line '%s' during phoneme seperation\n" % (line)) |
|
126 |
else: |
|
127 |
symbol = phoneme_list[2] |
|
128 |
symbol = symbol.rstrip() |
|
129 |
|
|
130 |
now = float(phoneme_list[0]) |
|
131 |
duration = (now - last)*1000 |
|
132 |
last = now |
|
133 |
plist.append(phoneme(symbol, int(duration))) |
|
126 | 134 |
|
127 | 135 |
self.logger.info("created phonemelist with " + str(len(plist)) + " elements") |
128 | 136 |
|
... | ... | |
137 | 145 |
self.logger.info("created utterance for 'phonemelist with '" + u.text + "'") |
138 | 146 |
return u |
139 | 147 |
|
148 |
def get_error_message(self): |
|
149 |
data_wav = pkgutil.get_data('mary_tts_bridge', 'data/connection_failed.wav') |
|
150 |
data_phonemes = pkgutil.get_data('mary_tts_bridge', 'data/connection_failed.phonemes') |
|
151 |
return (data_wav, data_phonemes) |
|
152 |
|
|
140 | 153 |
def execute_cb(self, goal): |
141 | 154 |
self.logger.info("incoming utterance '" + goal.text + "'") |
142 | 155 |
|
... | ... | |
150 | 163 |
|
151 | 164 |
except: |
152 | 165 |
self.logger.error("failed to create utterance error = '" + str(sys.exc_info()[1]) + "'") |
153 |
success = False |
|
166 |
#try to open error message from file: |
|
167 |
success = True |
|
168 |
(audio, phonelist) = self.get_error_message() |
|
154 | 169 |
|
155 | 170 |
if success: |
156 | 171 |
#build soundchunk |
tts_bridge/mary/mary_tts_bridge/MaryTTSClient.py | ||
---|---|---|
59 | 59 |
self.tts_port = tts_port |
60 | 60 |
self.locale = locale |
61 | 61 |
self.voice = voice |
62 |
|
|
62 |
|
|
63 | 63 |
def __del__(self): |
64 | 64 |
"""destructor |
65 | 65 |
""" |
... | ... | |
105 | 105 |
params = urllib.urlencode(raw_params) |
106 | 106 |
headers = {} |
107 | 107 |
|
108 |
#open connection to mary server |
|
109 |
conn = httplib.HTTPConnection(self.tts_host, self.tts_port) |
|
110 |
|
|
111 | 108 |
#conn.set_debuglevel(5) |
109 |
#open connection to mary server |
|
110 |
conn = httplib.HTTPConnection(self.tts_host, self.tts_port) |
|
112 | 111 |
|
113 | 112 |
conn.request("POST", "/process", params, headers) |
114 | 113 |
response = conn.getresponse() |
114 |
|
|
115 | 115 |
if response.status != 200: |
116 | 116 |
print response.getheaders() |
117 |
conn.close() |
|
117 | 118 |
raise RuntimeError("{0}: {1}".format(response.status,response.reason)) |
118 | 119 |
return response.read() |
119 | 120 |
|
tts_bridge/mary/setup.py | ||
---|---|---|
38 | 38 |
# Choose your license |
39 | 39 |
license='GPLv3', |
40 | 40 |
|
41 |
#include package data? |
|
42 |
include_package_data = True, |
|
43 |
|
|
41 | 44 |
# See https://pypi.python.org/pypi?%3Aaction=list_classifiers |
42 | 45 |
classifiers=[ |
43 | 46 |
# How mature is this project? Common values are |
... | ... | |
90 | 93 |
# installed, specify them here. If using Python 2.6 or less, then these |
91 | 94 |
# have to be included in MANIFEST.in as well. |
92 | 95 |
package_data={ |
96 |
'': ['data/connection_failed.*'], |
|
93 | 97 |
#'sample': ['package_data.dat'], |
94 | 98 |
}, |
95 | 99 |
|
Also available in: Unified diff