mac-say 0.2.0 → 0.2.1
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 +4 -4
- data/ChangeLog.md +7 -0
- data/README.md +3 -2
- data/examples/examples.rb +1 -0
- data/lib/mac/say.rb +12 -7
- data/lib/mac/say/version.rb +1 -1
- data/lib/mac/say/voices_attributes.rb +224 -100
- data/test/test_mac-say.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6eda8a2384074e1bb34ecd7a88da75657720e9a
|
4
|
+
data.tar.gz: fcc81dc4096ee88460cba904653218b4b0e0e916
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdf2b718734f76ef1c4918d1ad2858e0022e61dea79abe39bb38bb65f5ef8c234c5adc0cdf86d238b4b10a0732acbb76f7ad52a327c7cd32636beaa800daa957
|
7
|
+
data.tar.gz: e11e7500d77c929c337caaa97bcd14d147de4e847f3e971bf1bc62b055fbe09bd94daefeba54bf923976a74dc28547c0627307e12139d348e26f9f23c1ac273b
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
v0.2.1 / 2017-12-10
|
2
|
+
===================
|
3
|
+
|
4
|
+
* Added space separated voices support (MacOS High Sierra) i.e. 'Good news', 'Bad News', 'Pipe Organ'
|
5
|
+
* Added a new unofficial voice attribute `singing` (for voices like 'Cellos')
|
6
|
+
* Added a new ar_SA voice — 'Laila'
|
7
|
+
|
1
8
|
v0.2.0 / 2017-02-16
|
2
9
|
===================
|
3
10
|
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
* [Homepage](https://rubygems.org/gems/mac-say)
|
12
12
|
* [Documentation](http://rubydoc.info/gems/mac-say/frames)
|
13
|
-
* [Email](mailto:smileart21
|
13
|
+
* [Email](mailto:smileart21@gmail.com)
|
14
14
|
|
15
15
|
## Features
|
16
16
|
|
@@ -47,10 +47,11 @@ pp Mac::Say.voices.collect { |v| v[:language] }
|
|
47
47
|
pp Mac::Say.voices.collect { |v| v[:sample] }
|
48
48
|
|
49
49
|
# Look for voices by an attribute
|
50
|
+
pp Mac::Say.voice(:singing, true)
|
50
51
|
pp Mac::Say.voice(:joke, false)
|
51
52
|
pp Mac::Say.voice(:gender, :female)
|
52
53
|
|
53
|
-
# Look for voices by
|
54
|
+
# Look for voices by multiple attributes
|
54
55
|
pp Mac::Say.voice { |v| v[:joke] == true && v[:gender] == :female }
|
55
56
|
pp Mac::Say.voice { |v| v[:language] == :en && v[:gender] == :male && v[:quality] == :high && v[:joke] == false }
|
56
57
|
|
data/examples/examples.rb
CHANGED
data/lib/mac/say.rb
CHANGED
@@ -10,7 +10,7 @@ module Mac
|
|
10
10
|
# Allows to use simple TTS on Mac right from Ruby scripts
|
11
11
|
class Say
|
12
12
|
# A regex pattern to parse say voices list output
|
13
|
-
VOICE_PATTERN = /(^[\w-]+)\s+([\w-]+)\s+#\s([\p{Graph}\p{Zs}]+$)/i
|
13
|
+
VOICE_PATTERN = /(^[\w\s-]+)\s+([\w-]+)\s+#\s([\p{Graph}\p{Zs}]+$)/i
|
14
14
|
|
15
15
|
# An error raised when `say` command couldn't be found
|
16
16
|
class CommandNotFound < StandardError; end
|
@@ -32,7 +32,8 @@ module Mac
|
|
32
32
|
:sample,
|
33
33
|
:gender,
|
34
34
|
:joke,
|
35
|
-
:quality
|
35
|
+
:quality,
|
36
|
+
:singing
|
36
37
|
]
|
37
38
|
|
38
39
|
# Current voices list
|
@@ -48,7 +49,8 @@ module Mac
|
|
48
49
|
# :sample => "Isn't it nice to have a computer that will talk to you?",
|
49
50
|
# :gender => :female,
|
50
51
|
# :joke => false,
|
51
|
-
# :quality => :low
|
52
|
+
# :quality => :low,
|
53
|
+
# :singing => false
|
52
54
|
# },
|
53
55
|
# {
|
54
56
|
# :name => :albert,
|
@@ -57,7 +59,8 @@ module Mac
|
|
57
59
|
# :sample => "I have a frog in my throat. No, I mean a real frog!",
|
58
60
|
# :gender => :male,
|
59
61
|
# :joke => true,
|
60
|
-
# :quality => :medium
|
62
|
+
# :quality => :medium,
|
63
|
+
# :singing => false
|
61
64
|
# },
|
62
65
|
# ...
|
63
66
|
# ]
|
@@ -218,7 +221,8 @@ module Mac
|
|
218
221
|
# :sample => "Isn't it nice to have a computer that will talk to you?",
|
219
222
|
# :gender => :female,
|
220
223
|
# :joke => false,
|
221
|
-
# :quality => :low
|
224
|
+
# :quality => :low,
|
225
|
+
# :singing => false
|
222
226
|
# },
|
223
227
|
# {
|
224
228
|
# :name => :albert,
|
@@ -227,7 +231,8 @@ module Mac
|
|
227
231
|
# :sample => "I have a frog in my throat. No, I mean a real frog!",
|
228
232
|
# :gender => :male,
|
229
233
|
# :joke => true,
|
230
|
-
# :quality => :medium
|
234
|
+
# :quality => :medium,
|
235
|
+
# :singing => false
|
231
236
|
# },
|
232
237
|
# ...
|
233
238
|
# ]
|
@@ -293,7 +298,7 @@ module Mac
|
|
293
298
|
|
294
299
|
@voices = `#{say_path} -v '?'`.scan(VOICE_PATTERN).map do |voice|
|
295
300
|
lang = voice[1].split(/[_-]/)
|
296
|
-
name = voice[0].downcase.to_sym
|
301
|
+
name = voice[0].strip.downcase.to_sym
|
297
302
|
|
298
303
|
additional_attributes = ADDITIONAL_VOICE_ATTRIBUTES[name] || ADDITIONAL_VOICE_ATTRIBUTES[:_unknown_voice]
|
299
304
|
|
data/lib/mac/say/version.rb
CHANGED
@@ -10,501 +10,625 @@ ADDITIONAL_VOICE_ATTRIBUTES = {
|
|
10
10
|
_unknown_voice: {
|
11
11
|
gender: nil,
|
12
12
|
joke: nil,
|
13
|
-
quality: nil
|
13
|
+
quality: nil,
|
14
|
+
singing: nil
|
14
15
|
},
|
15
16
|
agnes: {
|
16
17
|
gender: :female,
|
17
18
|
joke: false,
|
18
|
-
quality: :low
|
19
|
+
quality: :low,
|
20
|
+
singing: false
|
19
21
|
},
|
20
22
|
albert: {
|
21
23
|
gender: :male,
|
22
24
|
joke: true,
|
23
|
-
quality: :medium
|
25
|
+
quality: :medium,
|
26
|
+
singing: false
|
24
27
|
},
|
25
28
|
alex: {
|
26
29
|
gender: :male,
|
27
30
|
joke: false,
|
28
|
-
quality: :medium
|
31
|
+
quality: :medium,
|
32
|
+
singing: false
|
29
33
|
},
|
30
34
|
alice: {
|
31
35
|
gender: :female,
|
32
36
|
joke: false,
|
33
|
-
quality: :high
|
37
|
+
quality: :high,
|
38
|
+
singing: false
|
34
39
|
},
|
35
40
|
allison: {
|
36
41
|
gender: :female,
|
37
42
|
joke: false,
|
38
|
-
quality: :high
|
43
|
+
quality: :high,
|
44
|
+
singing: false
|
39
45
|
},
|
40
46
|
alva: {
|
41
47
|
gender: :female,
|
42
48
|
joke: false,
|
43
|
-
quality: :low
|
49
|
+
quality: :low,
|
50
|
+
singing: false
|
44
51
|
},
|
45
52
|
amelie: {
|
46
53
|
gender: :female,
|
47
54
|
joke: false,
|
48
|
-
quality: :medium
|
55
|
+
quality: :medium,
|
56
|
+
singing: false
|
49
57
|
},
|
50
58
|
angelica: {
|
51
59
|
gender: :female,
|
52
60
|
joke: false,
|
53
|
-
quality: :low
|
61
|
+
quality: :low,
|
62
|
+
singing: false
|
54
63
|
},
|
55
64
|
anna: {
|
56
65
|
gender: :female,
|
57
66
|
joke: false,
|
58
|
-
quality: :medium
|
67
|
+
quality: :medium,
|
68
|
+
singing: false
|
59
69
|
},
|
60
70
|
audrey: {
|
61
71
|
gender: :female,
|
62
72
|
joke: false,
|
63
|
-
quality: :medium
|
73
|
+
quality: :medium,
|
74
|
+
singing: false
|
64
75
|
},
|
65
76
|
aurelie: {
|
66
77
|
gender: :female,
|
67
78
|
joke: false,
|
68
|
-
quality: :medium
|
79
|
+
quality: :medium,
|
80
|
+
singing: false
|
69
81
|
},
|
70
82
|
ava: {
|
71
83
|
gender: :female,
|
72
84
|
joke: false,
|
73
|
-
quality: :high
|
85
|
+
quality: :high,
|
86
|
+
singing: false
|
87
|
+
},
|
88
|
+
:'bad news' => {
|
89
|
+
gender: :male,
|
90
|
+
joke: true,
|
91
|
+
quality: :high,
|
92
|
+
singing: true
|
74
93
|
},
|
75
94
|
bahh: {
|
76
95
|
gender: :male,
|
77
96
|
joke: true,
|
78
|
-
quality: :low
|
97
|
+
quality: :low,
|
98
|
+
singing: false
|
79
99
|
},
|
80
100
|
bells: {
|
81
101
|
gender: :neutral,
|
82
102
|
joke: true,
|
83
|
-
quality: :medium
|
103
|
+
quality: :medium,
|
104
|
+
singing: true
|
84
105
|
},
|
85
106
|
boing: {
|
86
107
|
gender: :neutral,
|
87
108
|
joke: true,
|
88
|
-
quality: :medium
|
109
|
+
quality: :medium,
|
110
|
+
singing: false
|
89
111
|
},
|
90
112
|
bruce: {
|
91
113
|
gender: :male,
|
92
114
|
joke: false,
|
93
|
-
quality: :low
|
115
|
+
quality: :low,
|
116
|
+
singing: false
|
94
117
|
},
|
95
118
|
bubbles: {
|
96
119
|
gender: :male,
|
97
120
|
joke: true,
|
98
|
-
quality: :medium
|
121
|
+
quality: :medium,
|
122
|
+
singing: false
|
99
123
|
},
|
100
124
|
carlos: {
|
101
125
|
gender: :male,
|
102
126
|
joke: false,
|
103
|
-
quality: :high
|
127
|
+
quality: :high,
|
128
|
+
singing: false
|
104
129
|
},
|
105
130
|
carmit: {
|
106
131
|
gender: :female,
|
107
132
|
joke: false,
|
108
|
-
quality: :medium
|
133
|
+
quality: :medium,
|
134
|
+
singing: false
|
109
135
|
},
|
110
136
|
catarina: {
|
111
137
|
gender: :female,
|
112
138
|
joke: false,
|
113
|
-
quality: :low
|
139
|
+
quality: :low,
|
140
|
+
singing: false
|
114
141
|
},
|
115
142
|
cellos: {
|
116
143
|
gender: :male,
|
117
144
|
joke: true,
|
118
|
-
quality: :medium
|
145
|
+
quality: :medium,
|
146
|
+
singing: true
|
119
147
|
},
|
120
148
|
cem: {
|
121
149
|
gender: :male,
|
122
150
|
joke: false,
|
123
|
-
quality: :medium
|
151
|
+
quality: :medium,
|
152
|
+
singing: false
|
124
153
|
},
|
125
154
|
chantal: {
|
126
155
|
gender: :female,
|
127
156
|
joke: false,
|
128
|
-
quality: :medium
|
157
|
+
quality: :medium,
|
158
|
+
singing: false
|
129
159
|
},
|
130
160
|
claire: {
|
131
161
|
gender: :female,
|
132
162
|
joke: false,
|
133
|
-
quality: :medium
|
163
|
+
quality: :medium,
|
164
|
+
singing: false
|
134
165
|
},
|
135
166
|
damayanti: {
|
136
167
|
gender: :female,
|
137
168
|
joke: false,
|
138
|
-
quality: :medium
|
169
|
+
quality: :medium,
|
170
|
+
singing: false
|
139
171
|
},
|
140
172
|
daniel: {
|
141
173
|
gender: :male,
|
142
174
|
joke: false,
|
143
|
-
quality: :high
|
175
|
+
quality: :high,
|
176
|
+
singing: false
|
144
177
|
},
|
145
178
|
deranged: {
|
146
179
|
gender: :neutral,
|
147
180
|
joke: true,
|
148
|
-
quality: :medium
|
181
|
+
quality: :medium,
|
182
|
+
singing: false
|
149
183
|
},
|
150
184
|
diego: {
|
151
185
|
gender: :male,
|
152
186
|
joke: false,
|
153
|
-
quality: :low
|
187
|
+
quality: :low,
|
188
|
+
singing: false
|
154
189
|
},
|
155
190
|
ellen: {
|
156
191
|
gender: :female,
|
157
192
|
joke: false,
|
158
|
-
quality: :low
|
193
|
+
quality: :low,
|
194
|
+
singing: false
|
159
195
|
},
|
160
196
|
ewa: {
|
161
197
|
gender: :female,
|
162
198
|
joke: false,
|
163
|
-
quality: :medium
|
199
|
+
quality: :medium,
|
200
|
+
singing: false
|
164
201
|
},
|
165
202
|
federica: {
|
166
203
|
gender: :female,
|
167
204
|
joke: false,
|
168
|
-
quality: :medium
|
205
|
+
quality: :medium,
|
206
|
+
singing: false
|
169
207
|
},
|
170
208
|
felipe: {
|
171
209
|
gender: :male,
|
172
210
|
joke: false,
|
173
|
-
quality: :medium
|
211
|
+
quality: :medium,
|
212
|
+
singing: false
|
174
213
|
},
|
175
214
|
fiona: {
|
176
215
|
gender: :female,
|
177
216
|
joke: false,
|
178
|
-
quality: :high
|
217
|
+
quality: :high,
|
218
|
+
singing: false
|
179
219
|
},
|
180
220
|
fred: {
|
181
221
|
gender: :male,
|
182
222
|
joke: true,
|
183
|
-
quality: :low
|
223
|
+
quality: :low,
|
224
|
+
singing: false
|
225
|
+
},
|
226
|
+
:'good news' => {
|
227
|
+
gender: :male,
|
228
|
+
joke: true,
|
229
|
+
quality: :high,
|
230
|
+
singing: true
|
184
231
|
},
|
185
232
|
henrik: {
|
186
233
|
gender: :male,
|
187
234
|
joke: false,
|
188
|
-
quality: :high
|
235
|
+
quality: :high,
|
236
|
+
singing: false
|
189
237
|
},
|
190
238
|
hysterical: {
|
191
239
|
gender: :male,
|
192
240
|
joke: true,
|
193
|
-
quality: :medium
|
241
|
+
quality: :medium,
|
242
|
+
singing: false
|
194
243
|
},
|
195
244
|
ioana: {
|
196
245
|
gender: :female,
|
197
246
|
joke: false,
|
198
|
-
quality: :low
|
247
|
+
quality: :low,
|
248
|
+
singing: false
|
199
249
|
},
|
200
250
|
iveta: {
|
201
251
|
gender: :female,
|
202
252
|
joke: false,
|
203
|
-
quality: :low
|
253
|
+
quality: :low,
|
254
|
+
singing: false
|
204
255
|
},
|
205
256
|
joana: {
|
206
257
|
gender: :female,
|
207
258
|
joke: false,
|
208
|
-
quality: :low
|
259
|
+
quality: :low,
|
260
|
+
singing: false
|
209
261
|
},
|
210
262
|
jorge: {
|
211
263
|
gender: :male,
|
212
264
|
joke: false,
|
213
|
-
quality: :low
|
265
|
+
quality: :low,
|
266
|
+
singing: false
|
214
267
|
},
|
215
268
|
juan: {
|
216
269
|
gender: :male,
|
217
270
|
joke: false,
|
218
|
-
quality: :medium
|
271
|
+
quality: :medium,
|
272
|
+
singing: false
|
219
273
|
},
|
220
274
|
junior: {
|
221
275
|
gender: :male,
|
222
276
|
joke: true,
|
223
|
-
quality: :low
|
277
|
+
quality: :low,
|
278
|
+
singing: false
|
224
279
|
},
|
225
280
|
kanya: {
|
226
281
|
gender: :female,
|
227
282
|
joke: false,
|
228
|
-
quality: :medium
|
283
|
+
quality: :medium,
|
284
|
+
singing: false
|
229
285
|
},
|
230
286
|
karen: {
|
231
287
|
gender: :female,
|
232
288
|
joke: false,
|
233
|
-
quality: :high
|
289
|
+
quality: :high,
|
290
|
+
singing: false
|
234
291
|
},
|
235
292
|
kate: {
|
236
293
|
gender: :female,
|
237
294
|
joke: false,
|
238
|
-
quality: :high
|
295
|
+
quality: :high,
|
296
|
+
singing: false
|
239
297
|
},
|
240
298
|
kathy: {
|
241
299
|
gender: :female,
|
242
300
|
joke: true,
|
243
|
-
quality: :low
|
301
|
+
quality: :low,
|
302
|
+
singing: false
|
244
303
|
},
|
245
304
|
katya: {
|
246
305
|
gender: :female,
|
247
306
|
joke: false,
|
248
|
-
quality: :medium
|
307
|
+
quality: :medium,
|
308
|
+
singing: false
|
249
309
|
},
|
250
310
|
klara: {
|
251
311
|
gender: :female,
|
252
312
|
joke: false,
|
253
|
-
quality: :low
|
313
|
+
quality: :low,
|
314
|
+
singing: false
|
254
315
|
},
|
255
316
|
kyoko: {
|
256
317
|
gender: :female,
|
257
318
|
joke: false,
|
258
|
-
quality: :low
|
319
|
+
quality: :low,
|
320
|
+
singing: false
|
321
|
+
},
|
322
|
+
laila: {
|
323
|
+
gender: :female,
|
324
|
+
joke: false,
|
325
|
+
quality: :medium,
|
326
|
+
singing: false
|
259
327
|
},
|
260
328
|
laura: {
|
261
329
|
gender: :female,
|
262
330
|
joke: false,
|
263
|
-
quality: :low
|
331
|
+
quality: :low,
|
332
|
+
singing: false
|
264
333
|
},
|
265
334
|
lee: {
|
266
335
|
gender: :male,
|
267
336
|
joke: false,
|
268
|
-
quality: :high
|
337
|
+
quality: :high,
|
338
|
+
singing: false
|
269
339
|
},
|
270
340
|
lekha: {
|
271
341
|
gender: :female,
|
272
342
|
joke: false,
|
273
|
-
quality: :low
|
343
|
+
quality: :low,
|
344
|
+
singing: false
|
274
345
|
},
|
275
346
|
luca: {
|
276
347
|
gender: :male,
|
277
348
|
joke: false,
|
278
|
-
quality: :high
|
349
|
+
quality: :high,
|
350
|
+
singing: false
|
279
351
|
},
|
280
352
|
luciana: {
|
281
353
|
gender: :female,
|
282
354
|
joke: false,
|
283
|
-
quality: :low
|
355
|
+
quality: :low,
|
356
|
+
singing: false
|
284
357
|
},
|
285
358
|
maged: {
|
286
359
|
gender: :male,
|
287
360
|
joke: false,
|
288
|
-
quality: :low
|
361
|
+
quality: :low,
|
362
|
+
singing: false
|
289
363
|
},
|
290
364
|
magnus: {
|
291
365
|
gender: :male,
|
292
366
|
joke: false,
|
293
|
-
quality: :medium
|
367
|
+
quality: :medium,
|
368
|
+
singing: false
|
294
369
|
},
|
295
370
|
mariska: {
|
296
371
|
gender: :female,
|
297
372
|
joke: false,
|
298
|
-
quality: :medium
|
373
|
+
quality: :medium,
|
374
|
+
singing: false
|
299
375
|
},
|
300
376
|
markus: {
|
301
377
|
gender: :male,
|
302
378
|
joke: false,
|
303
|
-
quality: :low
|
379
|
+
quality: :low,
|
380
|
+
singing: false
|
304
381
|
},
|
305
382
|
:'mei-jia' => {
|
306
383
|
gender: :female,
|
307
384
|
joke: false,
|
308
|
-
quality: :medium
|
385
|
+
quality: :medium,
|
386
|
+
singing: false
|
309
387
|
},
|
310
388
|
melina: {
|
311
389
|
gender: :female,
|
312
390
|
joke: false,
|
313
|
-
quality: :low
|
391
|
+
quality: :low,
|
392
|
+
singing: false
|
314
393
|
},
|
315
394
|
milena: {
|
316
395
|
gender: :female,
|
317
396
|
joke: false,
|
318
|
-
quality: :medium
|
397
|
+
quality: :medium,
|
398
|
+
singing: false
|
319
399
|
},
|
320
400
|
moira: {
|
321
401
|
gender: :female,
|
322
402
|
joke: false,
|
323
|
-
quality: :medium
|
403
|
+
quality: :medium,
|
404
|
+
singing: false
|
324
405
|
},
|
325
406
|
monica: {
|
326
407
|
gender: :female,
|
327
408
|
joke: false,
|
328
|
-
quality: :medium
|
409
|
+
quality: :medium,
|
410
|
+
singing: false
|
329
411
|
},
|
330
412
|
nicolas: {
|
331
413
|
gender: :male,
|
332
414
|
joke: false,
|
333
|
-
quality: :high
|
415
|
+
quality: :high,
|
416
|
+
singing: false
|
334
417
|
},
|
335
418
|
nikos: {
|
336
419
|
gender: :male,
|
337
420
|
joke: false,
|
338
|
-
quality: :medium
|
421
|
+
quality: :medium,
|
422
|
+
singing: false
|
339
423
|
},
|
340
424
|
nora: {
|
341
425
|
gender: :female,
|
342
426
|
joke: false,
|
343
|
-
quality: :low
|
427
|
+
quality: :low,
|
428
|
+
singing: false
|
344
429
|
},
|
345
430
|
oliver: {
|
346
431
|
gender: :male,
|
347
432
|
joke: false,
|
348
|
-
quality: :low
|
433
|
+
quality: :low,
|
434
|
+
singing: false
|
349
435
|
},
|
350
436
|
oskar: {
|
351
437
|
gender: :male,
|
352
438
|
joke: false,
|
353
|
-
quality: :medium
|
439
|
+
quality: :medium,
|
440
|
+
singing: false
|
354
441
|
},
|
355
442
|
otoya: {
|
356
443
|
gender: :male,
|
357
444
|
joke: false,
|
358
|
-
quality: :medium
|
445
|
+
quality: :medium,
|
446
|
+
singing: false
|
359
447
|
},
|
360
448
|
paola: {
|
361
449
|
gender: :female,
|
362
450
|
joke: false,
|
363
|
-
quality: :high
|
451
|
+
quality: :high,
|
452
|
+
singing: false
|
364
453
|
},
|
365
454
|
paulina: {
|
366
455
|
gender: :female,
|
367
456
|
joke: false,
|
368
|
-
quality: :low
|
457
|
+
quality: :low,
|
458
|
+
singing: false
|
369
459
|
},
|
370
460
|
petra: {
|
371
461
|
gender: :female,
|
372
462
|
joke: false,
|
373
|
-
quality: :medium
|
463
|
+
quality: :medium,
|
464
|
+
singing: false
|
465
|
+
},
|
466
|
+
:'pipe organ' => {
|
467
|
+
gender: :male,
|
468
|
+
joke: true,
|
469
|
+
quality: :high,
|
470
|
+
singing: true
|
374
471
|
},
|
375
472
|
princess: {
|
376
473
|
gender: :female,
|
377
474
|
joke: true,
|
378
|
-
quality: :low
|
475
|
+
quality: :low,
|
476
|
+
singing: false
|
379
477
|
},
|
380
478
|
ralph: {
|
381
479
|
gender: :male,
|
382
480
|
joke: true,
|
383
|
-
quality: :low
|
481
|
+
quality: :low,
|
482
|
+
singing: false
|
384
483
|
},
|
385
484
|
samantha: {
|
386
485
|
gender: :female,
|
387
486
|
joke: false,
|
388
|
-
quality: :high
|
487
|
+
quality: :high,
|
488
|
+
singing: false
|
389
489
|
},
|
390
490
|
sara: {
|
391
491
|
gender: :female,
|
392
492
|
joke: false,
|
393
|
-
quality: :medium
|
493
|
+
quality: :medium,
|
494
|
+
singing: false
|
394
495
|
},
|
395
496
|
satu: {
|
396
497
|
gender: :female,
|
397
498
|
joke: false,
|
398
|
-
quality: :medium
|
499
|
+
quality: :medium,
|
500
|
+
singing: false
|
399
501
|
},
|
400
502
|
serena: {
|
401
503
|
gender: :female,
|
402
504
|
joke: false,
|
403
|
-
quality: :medium
|
505
|
+
quality: :medium,
|
506
|
+
singing: false
|
404
507
|
},
|
405
508
|
:'sin-ji' => {
|
406
509
|
gender: :female,
|
407
510
|
joke: false,
|
408
|
-
quality: :medium
|
511
|
+
quality: :medium,
|
512
|
+
singing: false
|
409
513
|
},
|
410
514
|
soledad: {
|
411
515
|
gender: :female,
|
412
516
|
joke: false,
|
413
|
-
quality: :medium
|
517
|
+
quality: :medium,
|
518
|
+
singing: false
|
414
519
|
},
|
415
520
|
susan: {
|
416
521
|
gender: :female,
|
417
522
|
joke: false,
|
418
|
-
quality: :medium
|
523
|
+
quality: :medium,
|
524
|
+
singing: false
|
419
525
|
},
|
420
526
|
tarik: {
|
421
527
|
gender: :male,
|
422
528
|
joke: false,
|
423
|
-
quality: :low
|
529
|
+
quality: :low,
|
530
|
+
singing: false
|
424
531
|
},
|
425
532
|
tessa: {
|
426
533
|
gender: :female,
|
427
534
|
joke: false,
|
428
|
-
quality: :high
|
535
|
+
quality: :high,
|
536
|
+
singing: false
|
429
537
|
},
|
430
538
|
thomas: {
|
431
539
|
gender: :male,
|
432
540
|
joke: false,
|
433
|
-
quality: :high
|
541
|
+
quality: :high,
|
542
|
+
singing: false
|
434
543
|
},
|
435
544
|
:'ting-ting' => {
|
436
545
|
gender: :female,
|
437
546
|
joke: false,
|
438
|
-
quality: :high
|
547
|
+
quality: :high,
|
548
|
+
singing: false
|
439
549
|
},
|
440
550
|
tom: {
|
441
551
|
gender: :male,
|
442
552
|
joke: false,
|
443
|
-
quality: :high
|
553
|
+
quality: :high,
|
554
|
+
singing: false
|
444
555
|
},
|
445
556
|
trinoids: {
|
446
557
|
gender: :neutral,
|
447
558
|
joke: true,
|
448
|
-
quality: :medium
|
559
|
+
quality: :medium,
|
560
|
+
singing: false
|
449
561
|
},
|
450
562
|
veena: {
|
451
563
|
gender: :female,
|
452
564
|
joke: false,
|
453
|
-
quality: :high
|
565
|
+
quality: :high,
|
566
|
+
singing: false
|
454
567
|
},
|
455
568
|
vicki: {
|
456
569
|
gender: :female,
|
457
570
|
joke: false,
|
458
|
-
quality: :low
|
571
|
+
quality: :low,
|
572
|
+
singing: false
|
459
573
|
},
|
460
574
|
victoria: {
|
461
575
|
gender: :female,
|
462
576
|
joke: false,
|
463
|
-
quality: :low
|
577
|
+
quality: :low,
|
578
|
+
singing: false
|
464
579
|
},
|
465
580
|
whisper: {
|
466
581
|
gender: :male,
|
467
582
|
joke: true,
|
468
|
-
quality: :medium
|
583
|
+
quality: :medium,
|
584
|
+
singing: false
|
469
585
|
},
|
470
586
|
xander: {
|
471
587
|
gender: :male,
|
472
588
|
joke: false,
|
473
|
-
quality: :high
|
589
|
+
quality: :high,
|
590
|
+
singing: false
|
474
591
|
},
|
475
592
|
yannick: {
|
476
593
|
gender: :male,
|
477
594
|
joke: false,
|
478
|
-
quality: :medium
|
595
|
+
quality: :medium,
|
596
|
+
singing: false
|
479
597
|
},
|
480
598
|
yelda: {
|
481
599
|
gender: :female,
|
482
600
|
joke: false,
|
483
|
-
quality: :low
|
601
|
+
quality: :low,
|
602
|
+
singing: false
|
484
603
|
},
|
485
604
|
yuna: {
|
486
605
|
gender: :female,
|
487
606
|
joke: false,
|
488
|
-
quality: :medium
|
607
|
+
quality: :medium,
|
608
|
+
singing: false
|
489
609
|
},
|
490
610
|
yuri: {
|
491
611
|
gender: :male,
|
492
612
|
joke: false,
|
493
|
-
quality: :low
|
613
|
+
quality: :low,
|
614
|
+
singing: false
|
494
615
|
},
|
495
616
|
zarvox: {
|
496
617
|
gender: :neutral,
|
497
618
|
joke: true,
|
498
|
-
quality: :medium
|
619
|
+
quality: :medium,
|
620
|
+
singing: false
|
499
621
|
},
|
500
622
|
zosia: {
|
501
623
|
gender: :female,
|
502
624
|
joke: false,
|
503
|
-
quality: :low
|
625
|
+
quality: :low,
|
626
|
+
singing: false
|
504
627
|
},
|
505
628
|
zuzana: {
|
506
629
|
gender: :female,
|
507
630
|
joke: false,
|
508
|
-
quality: :high
|
631
|
+
quality: :high,
|
632
|
+
singing: false
|
509
633
|
}
|
510
634
|
}.freeze
|
data/test/test_mac-say.rb
CHANGED
@@ -50,6 +50,8 @@ describe 'Mac::Say as a macOS `say` wrapper' do
|
|
50
50
|
voice.must_be_kind_of Hash
|
51
51
|
end
|
52
52
|
|
53
|
+
# For this test to pass you'd have to have more than
|
54
|
+
# one British voice on your machine!
|
53
55
|
it '.voice must return an Array of voices if > 1' do
|
54
56
|
voices = Mac::Say.voice(:country, :gb)
|
55
57
|
voices.must_be_kind_of Array
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mac-say
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serge Bedzhyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
230
|
version: '0'
|
231
231
|
requirements: []
|
232
232
|
rubyforge_project:
|
233
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.6.11
|
234
234
|
signing_key:
|
235
235
|
specification_version: 4
|
236
236
|
summary: Ruby wrapper around the macOS `say` command
|