win32-loquendo 1.2.0-x86-mingw32 → 1.2.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/win32/loquendo.rb +57 -1
- data/lib/win32/loquendo/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OWMyZTk0OWFkZmE0MTUyMDZlNmE5NTc0NDU2YTg2YzNkYzQ0N2E1Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjI4MjU3NDc5ZDRiNTVlZmJkMTBkZmZhYTU1MGFjZWU5MDlhNWVmZA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTdjYjgxOWU1MWE5ZjkzODBjY2JjYWFmMDgyOWY5MDA5ZTQyNzEzYjljYTlm
|
10
|
+
OWJjNGM2ZDIyZDBiOTRiYTkxNzA5OWRiYTQyOTk4OTIzMjYwMzY3ZGQyNWU2
|
11
|
+
MmQ3ZTZjZjVjMWZjNjFkZmM4MDg2NTkxODVhN2MwOTRmYzFkYTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDVhZDA3ZmMyNTVkYmEwNzk0NzU0MWRjMDAxMzA3ZjMyMmNkMmJjZmE2MTY2
|
14
|
+
YmQxNWQxOTliMmQ3NWQ4ZDdjMzg3YTBjOWZjZWY2YzdhNmY5MTQyZTBiMmI0
|
15
|
+
MTFiNTA4MGJlODk4YzYzODQ4Yzc4Y2JhY2M1Zjk5NzVlNDc3ZTA=
|
data/lib/win32/loquendo.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'ffi'
|
2
2
|
require 'win32/registry'
|
3
3
|
require 'tempfile'
|
4
|
+
begin
|
5
|
+
require 'highline/system_extensions'
|
6
|
+
rescue Gem::LoadError
|
7
|
+
# not installed
|
8
|
+
end
|
4
9
|
|
5
10
|
module Win32
|
6
11
|
module Loquendo
|
@@ -133,7 +138,12 @@ module Win32
|
|
133
138
|
end
|
134
139
|
|
135
140
|
def render_speech(text, device)
|
136
|
-
text
|
141
|
+
if text == STDIN && text.tty? && Object.const_defined?('HighLine')
|
142
|
+
text = read_unbuffered(text)
|
143
|
+
elsif text.respond_to?(:read)
|
144
|
+
text = text.read
|
145
|
+
end
|
146
|
+
text = break_long_lines(text)
|
137
147
|
unless LoqTTS7.ttsRead(@reader_ptr, text, true, false, 0) == 0
|
138
148
|
raise LoquendoException, "Failed to playing audio via #{device} library"
|
139
149
|
end
|
@@ -143,6 +153,52 @@ module Win32
|
|
143
153
|
end
|
144
154
|
end
|
145
155
|
|
156
|
+
# Workaround for [windows] console, where only about 100 chars can be
|
157
|
+
# entered / buffered for each line before the console hangs. Highline
|
158
|
+
# allows us to use infinitely long lines.
|
159
|
+
def read_unbuffered(io)
|
160
|
+
h = HighLine::SystemExtensions
|
161
|
+
s = ""
|
162
|
+
while true
|
163
|
+
c = h.get_character
|
164
|
+
case c
|
165
|
+
when 3 then exit(1) # ^C
|
166
|
+
when 4,26 then break # ^D or ^Z
|
167
|
+
when 8 # BACKSPACE
|
168
|
+
print "\b \b"
|
169
|
+
s.chop!
|
170
|
+
when 10,13 # CR or LF
|
171
|
+
puts
|
172
|
+
s << "\n"
|
173
|
+
else
|
174
|
+
print c.chr
|
175
|
+
s << c
|
176
|
+
end
|
177
|
+
end
|
178
|
+
s
|
179
|
+
end
|
180
|
+
|
181
|
+
# Loquendo API doesn't support lines longer than 135 characters
|
182
|
+
def break_long_lines(s, maxlen=120)
|
183
|
+
lines = []
|
184
|
+
line = ""
|
185
|
+
s.split.each do |word|
|
186
|
+
if line.length + word.length + 1 > maxlen
|
187
|
+
lines << line unless line.empty?
|
188
|
+
while word.length > maxlen # A single word is longer than allowed
|
189
|
+
segments = word.scan(/.{1,#{maxlen}}/)
|
190
|
+
lines << segments.shift
|
191
|
+
word = segments.join
|
192
|
+
end
|
193
|
+
line = word
|
194
|
+
else
|
195
|
+
line << (line.empty? ? word : " #{word}")
|
196
|
+
end
|
197
|
+
end
|
198
|
+
lines << line
|
199
|
+
lines.join("\n")
|
200
|
+
end
|
201
|
+
|
146
202
|
def load_voice(voice)
|
147
203
|
unless LoqTTS7.ttsLoadPersona(@reader_ptr, voice, nil, nil) == 0
|
148
204
|
LoqTTS7.ttsDeleteSession(nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-loquendo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Jonas Tingeborn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|