ruby_speech 2.4.0 → 3.0.0
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 +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +11 -23
- data/CHANGELOG.md +4 -0
- data/README.md +2 -2
- data/Rakefile +2 -0
- data/lib/ruby_speech/version.rb +1 -1
- data/ruby_speech.gemspec +3 -3
- data/spec/ruby_speech/grxml/builtins_spec.rb +72 -72
- data/spec/ruby_speech/grxml/grammar_spec.rb +37 -37
- data/spec/ruby_speech/grxml/item_spec.rb +33 -33
- data/spec/ruby_speech/grxml/match_spec.rb +1 -1
- data/spec/ruby_speech/grxml/matcher_spec.rb +62 -62
- data/spec/ruby_speech/grxml/max_match_spec.rb +2 -2
- data/spec/ruby_speech/grxml/no_match_spec.rb +2 -2
- data/spec/ruby_speech/grxml/one_of_spec.rb +6 -6
- data/spec/ruby_speech/grxml/potential_match_spec.rb +2 -2
- data/spec/ruby_speech/grxml/rule_spec.rb +17 -17
- data/spec/ruby_speech/grxml/ruleref_spec.rb +10 -10
- data/spec/ruby_speech/grxml/tag_spec.rb +5 -5
- data/spec/ruby_speech/grxml/token_spec.rb +7 -7
- data/spec/ruby_speech/grxml_spec.rb +24 -24
- data/spec/ruby_speech/nlsml_spec.rb +11 -11
- data/spec/ruby_speech/ssml/audio_spec.rb +19 -19
- data/spec/ruby_speech/ssml/break_spec.rb +16 -16
- data/spec/ruby_speech/ssml/desc_spec.rb +7 -7
- data/spec/ruby_speech/ssml/emphasis_spec.rb +21 -21
- data/spec/ruby_speech/ssml/mark_spec.rb +5 -5
- data/spec/ruby_speech/ssml/p_spec.rb +17 -17
- data/spec/ruby_speech/ssml/phoneme_spec.rb +8 -8
- data/spec/ruby_speech/ssml/prosody_spec.rb +61 -61
- data/spec/ruby_speech/ssml/s_spec.rb +16 -16
- data/spec/ruby_speech/ssml/say_as_spec.rb +9 -9
- data/spec/ruby_speech/ssml/speak_spec.rb +29 -29
- data/spec/ruby_speech/ssml/sub_spec.rb +7 -7
- data/spec/ruby_speech/ssml/voice_spec.rb +31 -31
- data/spec/ruby_speech/ssml_spec.rb +20 -20
- data/spec/ruby_speech_spec.rb +3 -3
- data/spec/spec_helper.rb +0 -1
- data/spec/support/grammar_matchers.rb +6 -6
- data/spec/support/match_examples.rb +5 -5
- data/spec/support/matchers.rb +1 -1
- metadata +17 -11
@@ -7,40 +7,40 @@ module RubySpeech
|
|
7
7
|
|
8
8
|
it "should create an SSML document" do
|
9
9
|
expected_doc = SSML::Speak.new doc
|
10
|
-
SSML.draw.
|
11
|
-
SSML.draw.document.xpath('ns:speak', ns: 'http://www.w3.org/2001/10/synthesis').size.
|
10
|
+
expect(SSML.draw).to eq(expected_doc)
|
11
|
+
expect(SSML.draw.document.xpath('ns:speak', ns: 'http://www.w3.org/2001/10/synthesis').size).to eq(1)
|
12
12
|
end
|
13
13
|
|
14
14
|
it "can draw with a language" do
|
15
15
|
expected_doc = SSML::Speak.new doc, language: 'pt-BR'
|
16
|
-
SSML.draw(language: 'pt-BR').
|
16
|
+
expect(SSML.draw(language: 'pt-BR')).to eq(expected_doc)
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "when the return value of the block is a string" do
|
20
20
|
it "should be inserted into the document" do
|
21
21
|
expected_doc = SSML::Speak.new(doc, :content => "Hi, I'm Fred")
|
22
|
-
SSML.draw { "Hi, I'm Fred" }.
|
22
|
+
expect(SSML.draw { "Hi, I'm Fred" }).to eq(expected_doc)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "when the return value of the block is not a string" do
|
27
27
|
it "should not be inserted into the document" do
|
28
28
|
expected_doc = SSML::Speak.new doc
|
29
|
-
SSML.draw { :foo }.
|
29
|
+
expect(SSML.draw { :foo }).to eq(expected_doc)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
describe "when inserting a string" do
|
34
34
|
it "should work" do
|
35
35
|
expected_doc = SSML::Speak.new(doc, :content => "Hi, I'm Fred")
|
36
|
-
SSML.draw { string "Hi, I'm Fred" }.
|
36
|
+
expect(SSML.draw { string "Hi, I'm Fred" }).to eq(expected_doc)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should allow other SSML elements to be inserted in the document" do
|
41
41
|
expected_doc = SSML::Speak.new doc
|
42
42
|
expected_doc << SSML::Voice.new(doc, :gender => :male, :name => 'fred')
|
43
|
-
SSML.draw { voice :gender => :male, :name => 'fred' }.
|
43
|
+
expect(SSML.draw { voice :gender => :male, :name => 'fred' }).to eq(expected_doc)
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should allow nested block return values" do
|
@@ -52,7 +52,7 @@ module RubySpeech
|
|
52
52
|
"Hi, I'm Fred."
|
53
53
|
end
|
54
54
|
end
|
55
|
-
doc.
|
55
|
+
expect(doc).to eq(expected_doc)
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should allow nested SSML elements" do
|
@@ -69,7 +69,7 @@ module RubySpeech
|
|
69
69
|
voice << SSML::SayAs.new(doc, :interpret_as => 'date', :format => 'dmy', :content => "01/02/1960")
|
70
70
|
expected_doc = SSML::Speak.new doc
|
71
71
|
expected_doc << voice
|
72
|
-
drawn_doc.
|
72
|
+
expect(drawn_doc).to eq(expected_doc)
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should allow accessing methods defined outside the block" do
|
@@ -78,7 +78,7 @@ module RubySpeech
|
|
78
78
|
end
|
79
79
|
|
80
80
|
expected_doc = SSML::Speak.new doc, :content => foo
|
81
|
-
SSML.draw { string foo }.
|
81
|
+
expect(SSML.draw { string foo }).to eq(expected_doc)
|
82
82
|
end
|
83
83
|
|
84
84
|
describe 'cloning' do
|
@@ -92,15 +92,15 @@ module RubySpeech
|
|
92
92
|
subject { original.clone }
|
93
93
|
|
94
94
|
it 'should match the contents of the original document' do
|
95
|
-
subject.to_s.
|
95
|
+
expect(subject.to_s).to eq(original.to_s)
|
96
96
|
end
|
97
97
|
|
98
98
|
it 'should match the class of the original document' do
|
99
|
-
subject.class.
|
99
|
+
expect(subject.class).to eq(original.class)
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'should be equal to the original document' do
|
103
|
-
subject.
|
103
|
+
expect(subject).to eq(original)
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|
@@ -129,7 +129,7 @@ module RubySpeech
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
doc2.
|
132
|
+
expect(doc2).to eq(expected_doc)
|
133
133
|
end
|
134
134
|
|
135
135
|
it "SSML elements" do
|
@@ -149,7 +149,7 @@ module RubySpeech
|
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
-
doc.
|
152
|
+
expect(doc).to eq(expected_doc)
|
153
153
|
end
|
154
154
|
|
155
155
|
it "strings" do
|
@@ -167,7 +167,7 @@ module RubySpeech
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
-
doc.
|
170
|
+
expect(doc).to eq(expected_doc)
|
171
171
|
end
|
172
172
|
end
|
173
173
|
|
@@ -180,7 +180,7 @@ module RubySpeech
|
|
180
180
|
2.times do
|
181
181
|
expected_doc << SSML::Voice.new(doc, :native_content => "I <3 nachos.")
|
182
182
|
end
|
183
|
-
drawn_doc.
|
183
|
+
expect(drawn_doc).to eq(expected_doc)
|
184
184
|
end
|
185
185
|
|
186
186
|
it "should allow all permutations of possible nested SSML elements" do
|
@@ -270,7 +270,7 @@ module RubySpeech
|
|
270
270
|
voice << SSML::Prosody.new(doc, :rate => :fast, :content => "And yet so spritely!")
|
271
271
|
voice << SSML::Voice.new(doc, :age => 12, :content => "And I'm young Fred")
|
272
272
|
expected_doc << voice
|
273
|
-
drawn_doc.
|
273
|
+
expect(drawn_doc).to eq(expected_doc)
|
274
274
|
end
|
275
275
|
end
|
276
276
|
|
@@ -293,10 +293,10 @@ module RubySpeech
|
|
293
293
|
subject { import }
|
294
294
|
|
295
295
|
it "should work" do
|
296
|
-
|
296
|
+
expect { subject }.not_to raise_error
|
297
297
|
end
|
298
298
|
|
299
|
-
it {
|
299
|
+
it { is_expected.to be_a SSML::Speak }
|
300
300
|
|
301
301
|
its(:children) { should == [voice] }
|
302
302
|
|
data/spec/ruby_speech_spec.rb
CHANGED
@@ -30,7 +30,7 @@ describe RubySpeech do
|
|
30
30
|
'''
|
31
31
|
end
|
32
32
|
|
33
|
-
it {
|
33
|
+
it { is_expected.to be_a RubySpeech::SSML::Element }
|
34
34
|
end
|
35
35
|
|
36
36
|
context "with a GRXML document" do
|
@@ -91,7 +91,7 @@ describe RubySpeech do
|
|
91
91
|
'''
|
92
92
|
end
|
93
93
|
|
94
|
-
it {
|
94
|
+
it { is_expected.to be_a RubySpeech::GRXML::Element }
|
95
95
|
end
|
96
96
|
|
97
97
|
context "with an NLSML document" do
|
@@ -118,7 +118,7 @@ describe RubySpeech do
|
|
118
118
|
'''
|
119
119
|
end
|
120
120
|
|
121
|
-
it {
|
121
|
+
it { is_expected.to be_a RubySpeech::NLSML::Document }
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,7 +6,7 @@ RSpec::Matchers.define :not_match do |input|
|
|
6
6
|
@result.is_a?(RubySpeech::GRXML::NoMatch)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
failure_message do |grammar|
|
10
10
|
"expected #{grammar} to not match #{input}, but received a #{@result.class}"
|
11
11
|
end
|
12
12
|
end
|
@@ -17,7 +17,7 @@ RSpec::Matchers.define :potentially_match do |input|
|
|
17
17
|
@result.is_a?(RubySpeech::GRXML::PotentialMatch)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
failure_message do |grammar|
|
21
21
|
"expected #{grammar} to potentially match #{input}, but received a #{@result.class}"
|
22
22
|
end
|
23
23
|
end
|
@@ -33,10 +33,10 @@ RSpec::Matchers.define :match do |input|
|
|
33
33
|
end
|
34
34
|
|
35
35
|
description do
|
36
|
-
%{#{
|
36
|
+
%{#{super()} and interpret as "#{@interpretation}"}
|
37
37
|
end
|
38
38
|
|
39
|
-
|
39
|
+
failure_message do |grammar|
|
40
40
|
messages = []
|
41
41
|
unless @result.is_a?(RubySpeech::GRXML::Match)
|
42
42
|
messages << "expected #{grammar} to match, got a #{@result.class}"
|
@@ -61,10 +61,10 @@ RSpec::Matchers.define :max_match do |input|
|
|
61
61
|
end
|
62
62
|
|
63
63
|
description do
|
64
|
-
%{#{
|
64
|
+
%{#{super()} and interpret as "#{@interpretation}"}
|
65
65
|
end
|
66
66
|
|
67
|
-
|
67
|
+
failure_message do |grammar|
|
68
68
|
messages = []
|
69
69
|
unless @result.is_a?(RubySpeech::GRXML::MaxMatch)
|
70
70
|
messages << "expected #{grammar} to max-match, got a #{@result.class}"
|
@@ -13,30 +13,30 @@ shared_examples_for "match" do
|
|
13
13
|
|
14
14
|
describe "equality" do
|
15
15
|
it "should be equal when mode, confidence, utterance and interpretation are the same" do
|
16
|
-
described_class.new(:mode => :dtmf, :confidence => 1, :utterance => '6', :interpretation => 'foo').
|
16
|
+
expect(described_class.new(:mode => :dtmf, :confidence => 1, :utterance => '6', :interpretation => 'foo')).to eq(described_class.new(:mode => :dtmf, :confidence => 1, :utterance => '6', :interpretation => 'foo'))
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "when the mode is different" do
|
20
20
|
it "should not be equal" do
|
21
|
-
described_class.new(:mode => :dtmf).
|
21
|
+
expect(described_class.new(:mode => :dtmf)).not_to eq(described_class.new(:mode => :speech))
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
describe "when the confidence is different" do
|
26
26
|
it "should not be equal" do
|
27
|
-
described_class.new(:confidence => 1).
|
27
|
+
expect(described_class.new(:confidence => 1)).not_to eq(described_class.new(:confidence => 0))
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe "when the utterance is different" do
|
32
32
|
it "should not be equal" do
|
33
|
-
described_class.new(:utterance => '6').
|
33
|
+
expect(described_class.new(:utterance => '6')).not_to eq(described_class.new(:utterance => 'foo'))
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "when the interpretation is different" do
|
38
38
|
it "should not be equal" do
|
39
|
-
described_class.new(:interpretation => 'foo').
|
39
|
+
expect(described_class.new(:interpretation => 'foo')).not_to eq(described_class.new(:interpretation => 'bar'))
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
data/spec/support/matchers.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_speech
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Langfeld
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -16,14 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.8'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.8.3
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
29
|
+
version: '1.8'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.8.3
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: activesupport
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +70,14 @@ dependencies:
|
|
64
70
|
requirements:
|
65
71
|
- - "~>"
|
66
72
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
73
|
+
version: '3.0'
|
68
74
|
type: :development
|
69
75
|
prerelease: false
|
70
76
|
version_requirements: !ruby/object:Gem::Requirement
|
71
77
|
requirements:
|
72
78
|
- - "~>"
|
73
79
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
80
|
+
version: '3.0'
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
82
|
name: rspec-its
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,16 +124,16 @@ dependencies:
|
|
118
124
|
name: rake
|
119
125
|
requirement: !ruby/object:Gem::Requirement
|
120
126
|
requirements:
|
121
|
-
- - "
|
127
|
+
- - ">="
|
122
128
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
129
|
+
version: '0'
|
124
130
|
type: :development
|
125
131
|
prerelease: false
|
126
132
|
version_requirements: !ruby/object:Gem::Requirement
|
127
133
|
requirements:
|
128
|
-
- - "
|
134
|
+
- - ">="
|
129
135
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
136
|
+
version: '0'
|
131
137
|
- !ruby/object:Gem::Dependency
|
132
138
|
name: guard
|
133
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -346,7 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
346
352
|
version: '0'
|
347
353
|
requirements: []
|
348
354
|
rubyforge_project: ruby_speech
|
349
|
-
rubygems_version: 2.
|
355
|
+
rubygems_version: 2.7.3
|
350
356
|
signing_key:
|
351
357
|
specification_version: 4
|
352
358
|
summary: A Ruby library for TTS & ASR document preparation
|