espeak-ruby 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of espeak-ruby might be problematic. Click here for more details.
- data/README.md +20 -6
- data/lib/espeak.rb +1 -0
- data/lib/espeak/speech.rb +0 -3
- data/lib/espeak/voice.rb +29 -0
- data/test/cases/voice_test.rb +21 -0
- data/test/fixtures/voices.txt +60 -0
- data/test/test_helper.rb +1 -0
- metadata +5 -3
- data/lib/hash_ext.rb +0 -9
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
espeak-ruby
|
2
2
|
===========
|
3
3
|
|
4
|
-
espeak-ruby is a small Ruby API for utilizing [espeak](http://espeak.sourceforge.net) and [lame](http://lame.sourceforge.net/) to create Text-To-Speech mp3 files.
|
4
|
+
espeak-ruby is a small Ruby API for utilizing [espeak](http://espeak.sourceforge.net) and [lame](http://lame.sourceforge.net/) to create Text-To-Speech mp3 files. It can also just speak (without saving).
|
5
5
|
See the [live demo](http://rors.org/demos/espeak-ruby).
|
6
6
|
|
7
7
|
Install
|
@@ -13,17 +13,31 @@ Add _espeak-ruby_ to Gemfile
|
|
13
13
|
gem "espeak-ruby", require: "espeak"
|
14
14
|
```
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
Examples
|
17
|
+
--------
|
18
|
+
|
19
|
+
First you need to include ESpeak module to access espeak API
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
include ESpeak
|
23
|
+
```
|
24
|
+
|
25
|
+
Then use it like this:
|
18
26
|
|
19
27
|
```ruby
|
20
28
|
# Speaks "YO!"
|
21
|
-
speech =
|
29
|
+
speech = Speech.new("YO!")
|
22
30
|
speech.speak # invokes espeak
|
23
31
|
|
24
32
|
# Creates hello-de.mp3 file
|
25
|
-
speech =
|
33
|
+
speech = Speech.new("Hallo Welt", voice: "de")
|
26
34
|
speech.save("hello-de.mp3") # invokes espeak + lame
|
35
|
+
|
36
|
+
# Lists voices
|
37
|
+
Voice.all.map { |v| v.language } # ["af", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "en-sc", "en-uk", "en-uk-north", "en-uk-rp", "en-uk-wmids", "en-us", "en-wi", "eo", "es", "es-la", "fi", "fr", "fr-be", "grc", "hi", "hr", "hu", "hy", "hy", "id", "is", "it", "jbo", "ka", "kn", "ku", "la", "lv", "mk", "ml", "nci", "nl", "no", "pap", "pl", "pt", "pt-pt", "ro", "ru", "sk", "sq", "sr", "sv", "sw", "ta", "tr", "vi", "zh", "zh-yue"]
|
38
|
+
|
39
|
+
# Find particular voice
|
40
|
+
Voice.find_by_language('en') #<ESpeak::Voice:0x007fe1d3806be8 @language="en", @name="default", @gender="M", @file="default">
|
27
41
|
```
|
28
42
|
|
29
43
|
Features
|
@@ -40,7 +54,7 @@ Currently only subset of espeak features is supported.
|
|
40
54
|
These are default values, and they can be easily overridden:
|
41
55
|
|
42
56
|
```ruby
|
43
|
-
|
57
|
+
Speech.new("Zdravo svete", voice: "sr", pitch: 90, speed: 200).speak
|
44
58
|
```
|
45
59
|
|
46
60
|
Requirements
|
data/lib/espeak.rb
CHANGED
data/lib/espeak/speech.rb
CHANGED
@@ -59,9 +59,6 @@ module ESpeak
|
|
59
59
|
"lame -V2 - #{filename} #{'--quiet' if options[:quiet] == true}"
|
60
60
|
end
|
61
61
|
|
62
|
-
def execute_system_command(filename, options)
|
63
|
-
end
|
64
|
-
|
65
62
|
def symbolize_keys(hash)
|
66
63
|
hash.inject({}) do |options, (key, value)|
|
67
64
|
options[(key.to_sym rescue key) || key] = value
|
data/lib/espeak/voice.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module ESpeak
|
4
|
+
class Voice
|
5
|
+
attr_reader :language, :name, :gender, :file
|
6
|
+
def initialize(attributes)
|
7
|
+
@language = attributes[:language]
|
8
|
+
@name = attributes[:name]
|
9
|
+
@gender = attributes[:gender]
|
10
|
+
@file = attributes[:file]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.all
|
14
|
+
voices = []
|
15
|
+
CSV.parse(espeak_voices, headers: :first_row, col_sep: ' ') do |row|
|
16
|
+
voices << Voice.new(language: row[1], gender: row[2], name: row[3], file: row[4] )
|
17
|
+
end
|
18
|
+
voices
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.find_by_language(lang)
|
22
|
+
all.find { |v| v.language == lang.to_s }
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.espeak_voices
|
26
|
+
`espeak --voices`
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class VoiceTest < Test::Unit::TestCase
|
4
|
+
include ESpeak
|
5
|
+
|
6
|
+
def setup
|
7
|
+
voices_file = File.read("test/fixtures/voices.txt")
|
8
|
+
Voice.expects(:espeak_voices).returns(voices_file)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_all
|
12
|
+
all_voices = Voice.all
|
13
|
+
assert all_voices.size > 0
|
14
|
+
assert %w(M F).include?(all_voices.first.gender)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_find_by_language
|
18
|
+
voice = Voice.find_by_language('en')
|
19
|
+
assert_equal 'en', voice.language
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
Pty Language Age/Gender VoiceName File Other Langs
|
2
|
+
5 af M afrikaans af
|
3
|
+
5 bs M bosnian bs
|
4
|
+
5 ca M catalan ca
|
5
|
+
5 cs M czech cs
|
6
|
+
5 cy M welsh-test cy
|
7
|
+
5 da M danish da
|
8
|
+
5 de M german de
|
9
|
+
5 el M greek el
|
10
|
+
5 en M default default
|
11
|
+
5 en-sc M en-scottish en/en-sc (en 4)
|
12
|
+
2 en-uk M english en/en (en 2)
|
13
|
+
5 en-uk-north M lancashire en/en-n (en-uk 3)
|
14
|
+
5 en-uk-rp M english_rp en/en-rp (en-uk 4)
|
15
|
+
5 en-uk-wmids M english_wmids en/en-wm
|
16
|
+
2 en-us M english-us en/en-us (en-r 5)(en 3)
|
17
|
+
5 en-wi M en-westindies en/en-wi (en-uk 4)
|
18
|
+
5 eo M esperanto eo
|
19
|
+
5 es M spanish es
|
20
|
+
5 es-la M spanish-latin-american es-la (es-mx 6)
|
21
|
+
5 fi M finnish fi
|
22
|
+
5 fr M french fr
|
23
|
+
5 fr-be M french (Belgium) fr-be
|
24
|
+
5 grc M greek-ancient test/grc
|
25
|
+
5 hi M hindi-test hi
|
26
|
+
5 hr M croatian hr (hbs 5)
|
27
|
+
5 hu M hungarian hu
|
28
|
+
5 hy M armenian hy
|
29
|
+
5 hy M armenian-west hy-west
|
30
|
+
5 id M indonesian-test id
|
31
|
+
5 is M icelandic-test is
|
32
|
+
5 it M italian it
|
33
|
+
5 jbo lojban test/jbo
|
34
|
+
5 ka georgian-test ka
|
35
|
+
5 kn kannada kn
|
36
|
+
5 ku M kurdish ku
|
37
|
+
5 la M latin la
|
38
|
+
5 lv M latvian lv
|
39
|
+
5 mk M macedonian-test mk
|
40
|
+
5 ml M malayalam ml
|
41
|
+
5 nci M nahuatl - classical test/nci
|
42
|
+
5 nl M dutch-test nl
|
43
|
+
5 no M norwegian no (nb 5)
|
44
|
+
5 pap papiamento-test test/pap
|
45
|
+
5 pl M polish pl
|
46
|
+
5 pt M brazil pt (pt-br 5)
|
47
|
+
5 pt-pt M portugal pt-pt
|
48
|
+
5 ro M romanian ro
|
49
|
+
5 ru M russian_test ru
|
50
|
+
5 sk M slovak sk
|
51
|
+
5 sq M albanian sq
|
52
|
+
5 sr M serbian sr
|
53
|
+
5 sv M swedish sv
|
54
|
+
5 sw M swahihi-test sw
|
55
|
+
5 ta M tamil ta
|
56
|
+
5 tr M turkish tr
|
57
|
+
5 vi M vietnam vi
|
58
|
+
5 zh M Mandarin zh
|
59
|
+
5 zh-yue M cantonese zh-yue (yue 5)(zhy 5)
|
60
|
+
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: espeak-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: espeak-ruby is small Ruby API for utilizing ‘espeak’ and ‘lame’ to create
|
15
15
|
Text-To-Speech mp3 files
|
@@ -20,9 +20,11 @@ extra_rdoc_files: []
|
|
20
20
|
files:
|
21
21
|
- Rakefile
|
22
22
|
- lib/espeak/speech.rb
|
23
|
+
- lib/espeak/voice.rb
|
23
24
|
- lib/espeak.rb
|
24
|
-
- lib/hash_ext.rb
|
25
25
|
- test/cases/speech_test.rb
|
26
|
+
- test/cases/voice_test.rb
|
27
|
+
- test/fixtures/voices.txt
|
26
28
|
- test/test_helper.rb
|
27
29
|
- README.md
|
28
30
|
homepage: http://github.com/dejan/espeak-ruby
|