win32-loquendo 1.1.0-x86-mingw32 → 1.1.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +106 -101
- data/bin/say +1 -1
- data/lib/win32/loquendo.rb +14 -1
- data/lib/win32/loquendo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODAxYWUzOGM0ZjA2ZmNjNmJlMDEyNTc4YTgxMGVkZDEwY2U2OWM4Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzRjODVlZTk5OTFmMzRkOGUxM2E3Y2FhMTk5ZmMzZDJlMTljZTQzMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MGFmNDk0MDZlNWI1ZmU1YzljODZkMDNhYjBkZmZkMTRhYmU2MzI1NzVlYWJk
|
10
|
+
ZTc4MDY4MTJlODA3NWZmNmU3NDA4ZmMzMjlhNTFjMzgzNTZiZDY5MTUzOTUw
|
11
|
+
MTA3NTIwYjc3OWQ2ZTBmNmFkNmE2Y2U1YzYyNjU2MzFjMjEwMTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OThkNjgxNDExNzJmNzZlMmZlODRhNTJmN2UzZWRiMmRmMWUzNTBiNmE3NGZj
|
14
|
+
M2IxY2QyZGQzYmVmNTM2ODZhY2M3ZjdhZTA1MWNjZGFlNTU0MGQ4OWQ0YjAy
|
15
|
+
M2IyYTFkMmE3Njg4ZjU0OTc4ZTkzOWUwYzhiYjU2ZTMwY2NjNTY=
|
data/README.md
CHANGED
@@ -1,101 +1,106 @@
|
|
1
|
-
# Win32::Loquendo
|
2
|
-
|
3
|
-
Ruby interface to the Loquendo speech synthesis (text to speech / TTS) program.
|
4
|
-
|
5
|
-
It also ships a command line utility `say` which allows you to get spoken
|
6
|
-
text directly from the console.
|
7
|
-
|
8
|
-
This gem only runs on Microsoft Windows as it relies both on the Win32 API as
|
9
|
-
well as the DLL files used by the Loquendo distribution. For that reason it
|
10
|
-
has been name spaced in the win32 module to make it abundantly clear which
|
11
|
-
platform it supports.
|
12
|
-
|
13
|
-
## Prerequisites
|
14
|
-
|
15
|
-
* Must have Loquendo installed on the machine in order to use this gem.
|
16
|
-
* ruby ffi library, will be installed automatically through rubygems
|
17
|
-
|
18
|
-
## Installation
|
19
|
-
|
20
|
-
$ gem install win32-loquendo
|
21
|
-
|
22
|
-
## API usage
|
23
|
-
|
24
|
-
Basic example showing the three types of use
|
25
|
-
|
26
|
-
require 'win32/loquendo'
|
27
|
-
|
28
|
-
reader = Win32::Loquendo::Reader.new()
|
29
|
-
|
30
|
-
reader.say("Say it aloud") # Send the text to the sound card
|
31
|
-
|
32
|
-
reader.say("Give me the data") do |data|
|
33
|
-
# do stuff with the string of PCM WAVE bytes
|
34
|
-
end
|
35
|
-
|
36
|
-
reader.write("audio.wav", "Save the spoken text to a file")
|
37
|
-
|
38
|
-
Customize how the text is spoken
|
39
|
-
|
40
|
-
reader = Win32::Loquendo::Reader.new({
|
41
|
-
:sample_rate => 32000, # Pick a sample rate in Hz
|
42
|
-
:channels => 2, # Stereo or mono (1 or 2 audio channels)
|
43
|
-
:voice => "Elizabeth" # Specify the default voice to use
|
44
|
-
})
|
45
|
-
|
46
|
-
reader.say "Hi, this is Elizabeth speaking" # Speak with the default voice.
|
47
|
-
reader.say "and this is Simon", "Simon" # Override the default voice
|
48
|
-
# for this utterance.
|
49
|
-
|
50
|
-
reader.voices.each do |name| # List installed voices that can
|
51
|
-
reader.say "My name is #{name}", name # be used for speaking.
|
52
|
-
end
|
53
|
-
|
54
|
-
Note that you can customize a lot on the fly regarding how Loquendo speaks, by
|
55
|
-
simply adding commands as part of the text being spoken. For example:
|
56
|
-
|
57
|
-
* Trigger whatever pre-programmed demo phrase the voice used was shipped with.
|
58
|
-
|
59
|
-
reader.say("\\demosentence and I'm speaking through ruby win32-loquendo")
|
60
|
-
|
61
|
-
* Provide proper pronunciation for words using [X-SAMPA][*]
|
62
|
-
|
63
|
-
reader.say("Hello, or in Finnish; \SAMPA=;('t_de4ve)", "Dave")
|
64
|
-
|
65
|
-
Finally you can launch speech prompts in parallel, overlapping to the degree
|
66
|
-
you'd like by running reader instances in separate threads. This example
|
67
|
-
generates something eerily similar to Google's audio captchas, using 10
|
68
|
-
overlapping voices.
|
69
|
-
|
70
|
-
(0...40).to_a.shuffle.each_slice(4).map{|a| a.join(" ") }.map{|s|
|
71
|
-
Thread.new { Win32::Loquendo::Reader.new.say(s) }
|
72
|
-
}.each {|t|
|
73
|
-
t.join
|
74
|
-
}
|
75
|
-
|
76
|
-
A note of caution: Only ever interact with a reader from one and the same thread.
|
77
|
-
If used from different threads it will cause undefined behavior (errors,
|
78
|
-
hangs, crashes), since the library interact with C-code over FFI and such
|
79
|
-
interactions are not thread safe.
|
80
|
-
|
81
|
-
## Command line usage
|
82
|
-
|
83
|
-
The command line program is named `say`
|
84
|
-
|
85
|
-
Usage: say [OPTIONS] [TEXT]
|
86
|
-
|
87
|
-
TEXT is the text you want to be spoken
|
88
|
-
|
89
|
-
Options:
|
90
|
-
-c (1|2) audio channels to use
|
91
|
-
-f FILE write audio to FILE instead of speaking it aloud
|
92
|
-
-h show this help text
|
93
|
-
-l lists the available voices
|
94
|
-
-s N sample rate in Hz
|
95
|
-
-v voice is the voice to use for speaking
|
96
|
-
|
97
|
-
To speak a phrase with the default voice, it's as easy as
|
98
|
-
|
99
|
-
say My PC can now speak, just like my Mac!
|
100
|
-
|
101
|
-
|
1
|
+
# Win32::Loquendo
|
2
|
+
|
3
|
+
Ruby interface to the Loquendo speech synthesis (text to speech / TTS) program.
|
4
|
+
|
5
|
+
It also ships a command line utility `say` which allows you to get spoken
|
6
|
+
text directly from the console.
|
7
|
+
|
8
|
+
This gem only runs on Microsoft Windows as it relies both on the Win32 API as
|
9
|
+
well as the DLL files used by the Loquendo distribution. For that reason it
|
10
|
+
has been name spaced in the win32 module to make it abundantly clear which
|
11
|
+
platform it supports.
|
12
|
+
|
13
|
+
## Prerequisites
|
14
|
+
|
15
|
+
* Must have Loquendo installed on the machine in order to use this gem.
|
16
|
+
* ruby ffi library, will be installed automatically through rubygems
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
$ gem install win32-loquendo
|
21
|
+
|
22
|
+
## API usage
|
23
|
+
|
24
|
+
Basic example showing the three types of use
|
25
|
+
|
26
|
+
require 'win32/loquendo'
|
27
|
+
|
28
|
+
reader = Win32::Loquendo::Reader.new()
|
29
|
+
|
30
|
+
reader.say("Say it aloud") # Send the text to the sound card
|
31
|
+
|
32
|
+
reader.say("Give me the data") do |data|
|
33
|
+
# do stuff with the string of PCM WAVE bytes
|
34
|
+
end
|
35
|
+
|
36
|
+
reader.write("audio.wav", "Save the spoken text to a file")
|
37
|
+
|
38
|
+
Customize how the text is spoken
|
39
|
+
|
40
|
+
reader = Win32::Loquendo::Reader.new({
|
41
|
+
:sample_rate => 32000, # Pick a sample rate in Hz
|
42
|
+
:channels => 2, # Stereo or mono (1 or 2 audio channels)
|
43
|
+
:voice => "Elizabeth" # Specify the default voice to use
|
44
|
+
})
|
45
|
+
|
46
|
+
reader.say "Hi, this is Elizabeth speaking" # Speak with the default voice.
|
47
|
+
reader.say "and this is Simon", "Simon" # Override the default voice
|
48
|
+
# for this utterance.
|
49
|
+
|
50
|
+
reader.voices.each do |name| # List installed voices that can
|
51
|
+
reader.say "My name is #{name}", name # be used for speaking.
|
52
|
+
end
|
53
|
+
|
54
|
+
Note that you can customize a lot on the fly regarding how Loquendo speaks, by
|
55
|
+
simply adding commands as part of the text being spoken. For example:
|
56
|
+
|
57
|
+
* Trigger whatever pre-programmed demo phrase the voice used was shipped with.
|
58
|
+
|
59
|
+
reader.say("\\demosentence and I'm speaking through ruby win32-loquendo")
|
60
|
+
|
61
|
+
* Provide proper pronunciation for words using [X-SAMPA][*]
|
62
|
+
|
63
|
+
reader.say("Hello, or in Finnish; \SAMPA=;('t_de4ve)", "Dave")
|
64
|
+
|
65
|
+
Finally you can launch speech prompts in parallel, overlapping to the degree
|
66
|
+
you'd like by running reader instances in separate threads. This example
|
67
|
+
generates something eerily similar to Google's audio captchas, using 10
|
68
|
+
overlapping voices.
|
69
|
+
|
70
|
+
(0...40).to_a.shuffle.each_slice(4).map{|a| a.join(" ") }.map{|s|
|
71
|
+
Thread.new { Win32::Loquendo::Reader.new.say(s) }
|
72
|
+
}.each {|t|
|
73
|
+
t.join
|
74
|
+
}
|
75
|
+
|
76
|
+
A note of caution: Only ever interact with a reader from one and the same thread.
|
77
|
+
If used from different threads it will cause undefined behavior (errors,
|
78
|
+
hangs, crashes), since the library interact with C-code over FFI and such
|
79
|
+
interactions are not thread safe.
|
80
|
+
|
81
|
+
## Command line usage
|
82
|
+
|
83
|
+
The command line program is named `say`
|
84
|
+
|
85
|
+
Usage: say [OPTIONS] [TEXT]
|
86
|
+
|
87
|
+
TEXT is the text you want to be spoken
|
88
|
+
|
89
|
+
Options:
|
90
|
+
-c (1|2) audio channels to use
|
91
|
+
-f FILE write audio to FILE instead of speaking it aloud
|
92
|
+
-h show this help text
|
93
|
+
-l lists the available voices
|
94
|
+
-s N sample rate in Hz
|
95
|
+
-v voice is the voice to use for speaking
|
96
|
+
|
97
|
+
To speak a phrase with the default voice, it's as easy as
|
98
|
+
|
99
|
+
say My PC can now speak, just like my Mac!
|
100
|
+
|
101
|
+
You can also change the default voice, so you don't have to provide the `-v`
|
102
|
+
option all the time. To change the default voice, create the file
|
103
|
+
"`%HOME%/.win32-loquendo`" and enter the voice you want to use on the first
|
104
|
+
line in that file.
|
105
|
+
|
106
|
+
[*]: http://en.wikipedia.org/wiki/X-SAMPA
|
data/bin/say
CHANGED
@@ -10,7 +10,7 @@ def usage
|
|
10
10
|
" -h show this help text",
|
11
11
|
" -l lists the available voices",
|
12
12
|
" -s N sample rate in Hz",
|
13
|
-
" -v voice is the voice to use for speaking"
|
13
|
+
" -v voice is the voice to use for speaking (default: #{Win32::Loquendo::Reader.default_voice})"
|
14
14
|
exit(1)
|
15
15
|
end
|
16
16
|
|
data/lib/win32/loquendo.rb
CHANGED
@@ -15,14 +15,18 @@ module Win32
|
|
15
15
|
# @option opts [Integer] :channels (2) denotes Stereo or mono, 2 or 1 channel.
|
16
16
|
# @option opts [String] :voice (Elisabeth) default voice to use unless
|
17
17
|
# overridden when calling {#say} or {#write}.
|
18
|
+
# @note To change the default voice, create the file "%HOME%/.win32-loquendo"
|
19
|
+
# and enter the voice you want to use on the first line.
|
18
20
|
def initialize(opts={})
|
19
21
|
@opts = {
|
20
22
|
:sample_rate => 32000,
|
21
23
|
:channels => 2,
|
22
|
-
:voice =>
|
24
|
+
:voice => self.class.default_voice
|
23
25
|
}.merge(opts)
|
24
26
|
@speaking = false
|
25
27
|
|
28
|
+
info "using voice: #{@opts[:voice]}"
|
29
|
+
|
26
30
|
# Sanity checking of input parameters
|
27
31
|
unless @opts[:sample_rate].kind_of?(Integer) && @opts[:sample_rate] > 0
|
28
32
|
raise LoquendoException, ":sample_rate must be an integer and larger than zero, but %s was specified" % @opts[:sample_rate].to_s
|
@@ -104,6 +108,15 @@ module Win32
|
|
104
108
|
buff.read_string.split(";")
|
105
109
|
end
|
106
110
|
|
111
|
+
def self.default_voice
|
112
|
+
fn = ENV['HOME'] + "./.win32-loquendo"
|
113
|
+
if File.exists?(fn)
|
114
|
+
File.readlines(fn).first.strip
|
115
|
+
else
|
116
|
+
"Elizabeth"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
107
120
|
private #################################################################
|
108
121
|
|
109
122
|
def say_aloud(text, voice = @opts[:voice])
|