1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#Copyright (c) 2009-11, Walter Bender, Tony Forster
# This procedure is invoked when the user-definable block on the
# "extras" palette is selected.
# Usage: Import this code into a Python (user-definable) block and
# pass a string to be read by the voice synthesizer. If a second
# argument is passed, by expanding the Python block, it is used to specify
# the pitch level of the speaker. Valid range is 0 to 99.
def myblock(tw, arg):
''' Text to speech '''
TABLE = {'af': 'afrikaans', 'cy': 'welsh-test', 'el': 'greek',
'es': 'spanish', 'hi': 'hindi-test', 'hy': 'armenian',
'ku': 'kurdish', 'mk': 'macedonian-test', 'pt': 'brazil',
'sk': 'slovak', 'sw': 'swahili', 'bs': 'bosnian', 'da': 'danish',
'en': 'english', 'fi': 'finnish', 'hr': 'croatian',
'id': 'indonesian-test', 'la': 'latin', 'nl': 'dutch-test',
'sq': 'albanian', 'ta': 'tamil', 'vi': 'vietnam-test',
'ca': 'catalan', 'de': 'german', 'eo': 'esperanto',
'fr': 'french', 'hu': 'hungarian', 'is': 'icelandic-test',
'lv': 'latvian', 'no': 'norwegian', 'ro': 'romanian',
'sr': 'serbian', 'zh': 'Mandarin', 'cs': 'czech', 'it': 'italian',
'pl': 'polish', 'ru': 'russian_test', 'sv': 'swedish',
'tr': 'turkish'}
import os
pitch = None
if type(arg) == type([]):
text = arg[0]
if len(arg) > 1:
pitch = int(arg[1])
if pitch > 99:
pitch = 99
elif pitch < 0:
pitch = 0
else:
text = arg
# Turtle Art numbers are passed as float,
# but they may be integer values.
if type(text) == float and int(text) == text:
text = int(text)
lang = os.environ['LANG'][0:2]
if lang in TABLE:
language_option = '-v ' + TABLE[lang]
else:
language_option = ''
if pitch is None:
os.system('espeak %s "%s" --stdout | aplay' % (language_option,
text))
else:
os.system('espeak %s "%s" -p "%s" --stdout | aplay' % (
language_option, text, pitch))
|