ispeech 1.0.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.
- data/.gitignore +6 -0
- data/Gemfile +3 -0
- data/LICENCE.txt +21 -0
- data/README.md +88 -0
- data/Rakefile +32 -0
- data/init.rb +1 -0
- data/ispeech.gemspec +25 -0
- data/lib/ispeech.rb +31 -0
- data/lib/ispeech/config.rb +27 -0
- data/lib/ispeech/constants.rb +19 -0
- data/lib/ispeech/error.rb +33 -0
- data/lib/ispeech/mock.rb +93 -0
- data/lib/ispeech/response.rb +45 -0
- data/lib/ispeech/voice.rb +121 -0
- data/lib/ispeech/voice_service.rb +65 -0
- data/lib/ispeech/voices/default.rb +42 -0
- data/script/create_voices.rb +143 -0
- data/script/test_voices.rb +87 -0
- data/spec/ispeech/config_spec.rb +29 -0
- data/spec/ispeech/mock_spec.rb +54 -0
- data/spec/ispeech/response_spec.rb +33 -0
- data/spec/ispeech/voice_service_spec.rb +68 -0
- data/spec/ispeech/voice_spec.rb +128 -0
- data/spec/ispeech_spec.rb +24 -0
- data/spec/spec_helper.rb +69 -0
- data/spec/test_data/test_config.yml +1 -0
- data/spec/test_data/test_file.mp3 +0 -0
- metadata +138 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ispeech::Config, 'When created' do
|
4
|
+
|
5
|
+
default_config = YAML.load_file('config/ispeech.yml')
|
6
|
+
default_config['api_key'].should_not == nil
|
7
|
+
|
8
|
+
context 'with a given api_key' do
|
9
|
+
it 'should report those and other default values' do
|
10
|
+
config = Ispeech::Config.new(default_config['api_key'])
|
11
|
+
config.target_url.should == URI.parse(Ispeech::Config::DEFAULT_TARGET_URL)
|
12
|
+
config.api_key.should == default_config['api_key']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'from a config file' do
|
17
|
+
it 'should default to the local config/ispeech.yml' do
|
18
|
+
config = Ispeech::Config.read
|
19
|
+
config.api_key.should == default_config['api_key']
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should accept an arbitary config file argument' do
|
23
|
+
config = Ispeech::Config.read(test_config)
|
24
|
+
config.api_key.should_not be_nil
|
25
|
+
config.api_key.should_not == default_config['api_key']
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'ispeech/mock'
|
3
|
+
|
4
|
+
describe Ispeech::Mock do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
Ispeech::Mock.enable!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Ispeech::VoiceService.expect_ok_response
|
12
|
+
Ispeech::Mock.disable!
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'When mock is on' do
|
16
|
+
text_string = 'This is a test'
|
17
|
+
service = Ispeech::VoiceService.new
|
18
|
+
|
19
|
+
it 'it should default to giving an working response without net access' do
|
20
|
+
response = service.generate_sound(text_string)
|
21
|
+
|
22
|
+
file = response.download_to_tempfile
|
23
|
+
file.should be_kind_of(Tempfile)
|
24
|
+
file.rewind
|
25
|
+
contents = file.read
|
26
|
+
file.close
|
27
|
+
contents.should == File.read(RESPONSE_TEST_FILE)
|
28
|
+
|
29
|
+
WebMock.should_not have_requested(:any, service.config.target_url.to_s)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'it should give an error response when that expectation has been set' do
|
33
|
+
Ispeech::VoiceService.expect_error_response
|
34
|
+
|
35
|
+
expect do
|
36
|
+
service.generate_sound(text_string)
|
37
|
+
end.to raise_error(Ispeech::Mock::FAKE_ERROR)
|
38
|
+
|
39
|
+
WebMock.should_not have_requested(:any, service.config.target_url.to_s)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'once set to an error and set back to ok should not raise an error' do
|
43
|
+
Ispeech::VoiceService.expect_error_response
|
44
|
+
Ispeech::VoiceService.expect_ok_response
|
45
|
+
|
46
|
+
expect do
|
47
|
+
service.generate_sound(text_string)
|
48
|
+
end.to_not raise_error
|
49
|
+
|
50
|
+
WebMock.should_not have_requested(:any, service.config.target_url.to_s)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
describe Ispeech::Response do
|
5
|
+
|
6
|
+
it 'should throw an error when created with bogus parameters' do
|
7
|
+
expect do
|
8
|
+
Ispeech::Response.new('take this!')
|
9
|
+
end.to raise_error(Ispeech::Error, Ispeech::Response::ERROR_UNEXPECTED_RESPONSE.message)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should download and return a tempfile with the object contained in the response' do
|
13
|
+
service_url = URI.parse('http://somewhere.com/api')
|
14
|
+
stub_ok_response_for_url(service_url)
|
15
|
+
service_response = Net::HTTP.get_response(service_url)
|
16
|
+
|
17
|
+
response = Ispeech::Response.new(service_response)
|
18
|
+
|
19
|
+
file = response.download_to_tempfile
|
20
|
+
file.should be_kind_of(Tempfile)
|
21
|
+
file.rewind
|
22
|
+
contents = file.read
|
23
|
+
file.close
|
24
|
+
contents.should == File.read(RESPONSE_TEST_FILE)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should raise an error when file download fails with non 200 response' do
|
28
|
+
expect do
|
29
|
+
Ispeech::Response.new(Net::HTTPNotFound.new("Body?", 404, "Something went wrong."))
|
30
|
+
end.to raise_error(Ispeech::Error)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ispeech::VoiceService do
|
4
|
+
|
5
|
+
text_string = 'This is a test'
|
6
|
+
|
7
|
+
context 'When create without parameters' do
|
8
|
+
service = Ispeech::VoiceService.new
|
9
|
+
|
10
|
+
it 'should use the default config' do
|
11
|
+
service.config.should be_kind_of(Ispeech::Config)
|
12
|
+
service.config.should == Ispeech.config
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should allow generation of MP3 sound' do
|
16
|
+
if USE_MOCKS
|
17
|
+
stub_ok_response(service)
|
18
|
+
end
|
19
|
+
|
20
|
+
sound_url = service.generate_sound(text_string, :language => :en)
|
21
|
+
sound_url.should be_kind_of(Ispeech::Response)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should throw an error when created with nil config' do
|
26
|
+
expect do
|
27
|
+
service = Ispeech::VoiceService.new(nil)
|
28
|
+
end.to raise_error(Ispeech::Error, Ispeech::VoiceService::ERROR_MISSING_CONFIG.message)
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'When created with config with invalid api_key' do
|
32
|
+
service = Ispeech::VoiceService.new(Ispeech::Config.read(test_config))
|
33
|
+
|
34
|
+
it 'should raise the reported access error' do
|
35
|
+
if USE_MOCKS
|
36
|
+
stub_invalid_access_response(service)
|
37
|
+
end
|
38
|
+
|
39
|
+
expect do
|
40
|
+
service.generate_sound(text_string, :language => :en)
|
41
|
+
end.to raise_error(Ispeech::ServiceError, /Code: 1, Message: Invalid API key/)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'When generating sound' do
|
46
|
+
service = Ispeech::VoiceService.new
|
47
|
+
|
48
|
+
it 'should allow low quality setting' do
|
49
|
+
if USE_MOCKS
|
50
|
+
stub_ok_response(service).with(:body => hash_including(:voice => DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first))
|
51
|
+
service.generate_sound(text_string, :speaker => DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first, :quality => :low)
|
52
|
+
else
|
53
|
+
pending("Without mock, the returned file quality needs to be confirmed")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should allow custom voice setting' do
|
58
|
+
if USE_MOCKS
|
59
|
+
stub_ok_response(service).with(:body => hash_including(:voice => 'johnny'))
|
60
|
+
voice = Ispeech::Voice.new('johnny', :male, 'en')
|
61
|
+
service.generate_with_voice(text_string, voice)
|
62
|
+
else
|
63
|
+
pending("Without mock, the returned file quality needs to be confirmed")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ispeech::Voice do
|
4
|
+
|
5
|
+
context 'When created' do
|
6
|
+
speaker_name = 'tom'
|
7
|
+
test_voice = Ispeech::Voice.new(speaker_name, Ispeech::Voice::GENDER_FEMALE)
|
8
|
+
|
9
|
+
it 'with name and gender should report default values' do
|
10
|
+
test_voice.speaker.should == speaker_name
|
11
|
+
test_voice.gender.should == Ispeech::Voice::GENDER_FEMALE
|
12
|
+
test_voice.quality.should == Ispeech::Voice::QUALITY_HIGH
|
13
|
+
test_voice.languages.should be_kind_of(Set)
|
14
|
+
test_voice.languages.should be_empty
|
15
|
+
test_voice.language.should be_nil
|
16
|
+
test_voice.id.should == "#{speaker_name}"
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should allow flipping quality setting' do
|
20
|
+
test_voice.low_quality!
|
21
|
+
test_voice.quality.should == Ispeech::Voice::QUALITY_LOW
|
22
|
+
test_voice.high_quality!
|
23
|
+
test_voice.quality.should == Ispeech::Voice::QUALITY_HIGH
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'With a set of defined voices' do
|
28
|
+
it 'should throw an error if the voice does not exist' do
|
29
|
+
expect do
|
30
|
+
Ispeech::Voice.named_voice('Birkir')
|
31
|
+
end.to raise_error(Ispeech::Error, "Voice does not exist.")
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should return the active voice map' do
|
35
|
+
Ispeech::Voice.map.should == Ispeech::Voices::PER_LANGUAGE
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'should find a voice' do
|
39
|
+
it 'given an existing speaker name' do
|
40
|
+
voice = Ispeech::Voice.named_voice(DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first)
|
41
|
+
voice.speaker.should == DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first
|
42
|
+
voice.language.should == 'en'
|
43
|
+
voice.gender.should == Ispeech::Voice::GENDER_FEMALE
|
44
|
+
voice.languages.to_a.should == ['en']
|
45
|
+
voice.id.should == DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'given an existing speaker name in lower case' do
|
49
|
+
voice = Ispeech::Voice.named_voice('bruno')
|
50
|
+
voice.speaker.should == 'Bruno'
|
51
|
+
voice.gender.should == Ispeech::Voice::GENDER_MALE
|
52
|
+
voice.language.should == 'fr'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'given an existing speaker name as a symbol' do
|
56
|
+
voice = Ispeech::Voice.named_voice(:rosa)
|
57
|
+
voice.speaker.should == 'Rosa'
|
58
|
+
voice.gender.should == Ispeech::Voice::GENDER_FEMALE
|
59
|
+
voice.language.should == 'es'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'should extract a voice when given an option that' do
|
64
|
+
it 'specifies nothing, defaulting to English' do
|
65
|
+
voice = Ispeech::Voice.extract_from_options
|
66
|
+
(DEFAULT_ENGLISH_FEMALE_TEST_VOICES + DEFAULT_ENGLISH_MALE_TEST_VOICES).should include(voice.speaker)
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'specifies a speaker' do
|
70
|
+
voice = Ispeech::Voice.extract_from_options(:speaker => 'antoine')
|
71
|
+
voice.speaker.should == 'Antoine'
|
72
|
+
voice.gender.should == Ispeech::Voice::GENDER_MALE
|
73
|
+
voice.language.should == 'fr'
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'specifies a language' do
|
77
|
+
voice = Ispeech::Voice.extract_from_options(:language => :es)
|
78
|
+
voice.speaker.should == 'Rosa'
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'specifies a language and no gender' do
|
82
|
+
voice = Ispeech::Voice.extract_from_options(:language => :fr)
|
83
|
+
voice.should_not be_nil
|
84
|
+
['Antoine', 'Bruno'].should include(voice.speaker)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'specifies a language and gender' do
|
88
|
+
voice = Ispeech::Voice.extract_from_options(:language => :es, :gender => Ispeech::Voice::GENDER_FEMALE)
|
89
|
+
voice.speaker.should == 'Rosa'
|
90
|
+
|
91
|
+
voice = Ispeech::Voice.extract_from_options(:language => :es, :gender => Ispeech::Voice::GENDER_MALE)
|
92
|
+
voice.should be_nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'Allows for voices to be overriden or changed' do
|
98
|
+
after(:each) do
|
99
|
+
Ispeech::Voice.reset_map
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should allow removing specific entries' do
|
103
|
+
Ispeech::Voice.map[:en][:male].first.should == DEFAULT_ENGLISH_MALE_TEST_VOICES.first
|
104
|
+
Ispeech::Voice.override_map(:en => nil)
|
105
|
+
Ispeech::Voice.map[:en].should be_nil
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should allow mapping one entry to another' do
|
109
|
+
Ispeech::Voice.map[:en][:male].first.should == DEFAULT_ENGLISH_MALE_TEST_VOICES.first
|
110
|
+
Ispeech::Voice.override_map(:en => :fr)
|
111
|
+
Ispeech::Voice.map[:en][:male].first.should == 'Antoine'
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should allow replacing an entry' do
|
115
|
+
Ispeech::Voice.map[:en][:male].first.should == DEFAULT_ENGLISH_MALE_TEST_VOICES.first
|
116
|
+
Ispeech::Voice.override_map(:en => {:male => ['Johnny']})
|
117
|
+
Ispeech::Voice.map[:en][:male].should == ['Johnny']
|
118
|
+
Ispeech::Voice.map[:en][:female].first.should == DEFAULT_ENGLISH_FEMALE_TEST_VOICES.first
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should allow adding an entry' do
|
122
|
+
Ispeech::Voice.map[:is].should be_nil
|
123
|
+
Ispeech::Voice.override_map(:is => {:male => ['Birkir'], :female => ['Harpa']})
|
124
|
+
Ispeech::Voice.map[:is][:male].first.should == 'Birkir'
|
125
|
+
Ispeech::Voice.map[:is][:female].first.should == 'Harpa'
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ispeech do
|
4
|
+
it 'should reference a config file' do
|
5
|
+
config = Ispeech.config
|
6
|
+
|
7
|
+
config.should_not be_nil
|
8
|
+
config.should be_a_kind_of(Ispeech::Config)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should allow setting of the config file' do
|
12
|
+
default_config = Ispeech.config
|
13
|
+
|
14
|
+
begin
|
15
|
+
test_config = Ispeech::Config.read(test_config)
|
16
|
+
|
17
|
+
Ispeech.config = test_config
|
18
|
+
Ispeech.config.should == test_config
|
19
|
+
ensure
|
20
|
+
Ispeech.config = default_config
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
RESPONSE_TEST_FILE = File.join('spec', 'test_data', 'test_file.mp3')
|
2
|
+
DEFAULT_ENGLISH_FEMALE_TEST_VOICES = ["usenglishfemale", "auenglishfemale"]
|
3
|
+
DEFAULT_ENGLISH_MALE_TEST_VOICES = ["usenglishmale"]
|
4
|
+
USE_MOCKS = true
|
5
|
+
CONFIG_DIR = 'config'
|
6
|
+
CONFIG_FILE = File.join(CONFIG_DIR, 'ispeech.yml')
|
7
|
+
DEFAULT_CONFIG_FILE = <<-YAML
|
8
|
+
api_key: 'developerdemokeydeveloperdemokey'
|
9
|
+
YAML
|
10
|
+
|
11
|
+
def create_missing_config_file
|
12
|
+
unless File.exists?(CONFIG_FILE)
|
13
|
+
Dir.mkdir(CONFIG_DIR)
|
14
|
+
File.open(CONFIG_FILE, 'w') do |f|
|
15
|
+
f.write(DEFAULT_CONFIG_FILE)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
create_missing_config_file
|
21
|
+
|
22
|
+
require File.join(File.dirname(__FILE__), '..', 'init')
|
23
|
+
require 'bundler'
|
24
|
+
Bundler.require(:development)
|
25
|
+
require 'webmock/rspec'
|
26
|
+
|
27
|
+
if USE_MOCKS
|
28
|
+
WebMock.disable_net_connect!
|
29
|
+
else
|
30
|
+
WebMock.allow_net_connect!
|
31
|
+
end
|
32
|
+
|
33
|
+
def silence_warnings
|
34
|
+
begin
|
35
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
36
|
+
yield
|
37
|
+
ensure
|
38
|
+
$VERBOSE = old_verbose
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Some test voices.
|
43
|
+
silence_warnings do
|
44
|
+
Ispeech::Voices::PER_LANGUAGE = {
|
45
|
+
:en => {:female => DEFAULT_ENGLISH_FEMALE_TEST_VOICES, :male => DEFAULT_ENGLISH_MALE_TEST_VOICES},
|
46
|
+
:es => {:female => ["Rosa"], :male => []},
|
47
|
+
:fr => {:female => [], :male => ["Antoine", "Bruno"]},
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
# Helper methods
|
52
|
+
|
53
|
+
def test_config
|
54
|
+
File.join('spec', 'test_data', 'test_config.yml')
|
55
|
+
end
|
56
|
+
|
57
|
+
def stub_invalid_access_response(service)
|
58
|
+
body_string = "result=error&code=1&message=Invalid+API+key"
|
59
|
+
stub_request(:any, service.config.target_url.to_s).to_return(:headers => {:content_length => body_string.size}, :body => body_string, :status => 202)
|
60
|
+
end
|
61
|
+
|
62
|
+
def stub_ok_response_for_url(target_url)
|
63
|
+
body_string = File.new(RESPONSE_TEST_FILE)
|
64
|
+
stub_request(:any, target_url.to_s).to_return(:headers => {:content_length => body_string.size}, :body => body_string, :status => 200)
|
65
|
+
end
|
66
|
+
|
67
|
+
def stub_ok_response(service)
|
68
|
+
stub_ok_response_for_url(service.config.target_url)
|
69
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
api_key: 'TEST_KEY'
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ispeech
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Birkir A. Barkarson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: backports
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.6.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.6.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: mocha
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: webmock
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.8.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.8.0
|
78
|
+
description: Ruby interface to Ispeech's API for generating speech from text. More
|
79
|
+
info at http://www.ispeech.org/api/
|
80
|
+
email:
|
81
|
+
- birkirb@stoicviking.net
|
82
|
+
executables: []
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- .gitignore
|
87
|
+
- Gemfile
|
88
|
+
- LICENCE.txt
|
89
|
+
- README.md
|
90
|
+
- Rakefile
|
91
|
+
- init.rb
|
92
|
+
- ispeech.gemspec
|
93
|
+
- lib/ispeech.rb
|
94
|
+
- lib/ispeech/config.rb
|
95
|
+
- lib/ispeech/constants.rb
|
96
|
+
- lib/ispeech/error.rb
|
97
|
+
- lib/ispeech/mock.rb
|
98
|
+
- lib/ispeech/response.rb
|
99
|
+
- lib/ispeech/voice.rb
|
100
|
+
- lib/ispeech/voice_service.rb
|
101
|
+
- lib/ispeech/voices/default.rb
|
102
|
+
- script/create_voices.rb
|
103
|
+
- script/test_voices.rb
|
104
|
+
- spec/ispeech/config_spec.rb
|
105
|
+
- spec/ispeech/mock_spec.rb
|
106
|
+
- spec/ispeech/response_spec.rb
|
107
|
+
- spec/ispeech/voice_service_spec.rb
|
108
|
+
- spec/ispeech/voice_spec.rb
|
109
|
+
- spec/ispeech_spec.rb
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
- spec/test_data/test_config.yml
|
112
|
+
- spec/test_data/test_file.mp3
|
113
|
+
homepage: https://github.com/birkirb/ispeech
|
114
|
+
licenses: []
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options: []
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ! '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project: ispeech
|
133
|
+
rubygems_version: 1.8.24
|
134
|
+
signing_key:
|
135
|
+
specification_version: 3
|
136
|
+
summary: Generate speech from the ispeech text to voice service.
|
137
|
+
test_files: []
|
138
|
+
has_rdoc:
|