nuance 0.0.4 → 0.0.5
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/lib/nuance.rb +2 -0
- data/lib/nuance/dictation-base64.cer +30 -30
- data/lib/nuance/transcription.rb +25 -8
- data/lib/nuance/version.rb +1 -1
- data/nuance.gemspec +1 -1
- data/spec/nuance-transcription_spec.rb +13 -2
- metadata +20 -4
data/lib/nuance.rb
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIFLTCCBBWgAwIBAgIDAcXvMA0GCSqGSIb3DQEBBQUAMEAxCzAJBgNVBAYTAlVT
|
|
3
|
-
MRcwFQYDVQQKEw5HZW9UcnVzdCwgSW5jLjEYMBYGA1UEAxMPR2VvVHJ1c3QgU1NM
|
|
4
|
-
IENBMB4XDTEyMTAyNDEzMTA0NFoXDTE0MTEyNjE0MTA1NVowgbkxKTAnBgNVBAUT
|
|
5
|
-
IHk5Sk5Db3ZoUGJOQ2EvaUJNZE9jNGthWWhqNjhhSTliMQswCQYDVQQGEwJVUzEW
|
|
6
|
-
MBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHUGVhYm9keTEjMCEGA1UE
|
|
7
|
-
ChMaTnVhbmNlIENvbW11bmljYXRpb25zIEluYy4xETAPBgNVBAsTCE1vYmlsaXR5
|
|
8
|
-
MR0wGwYDVQQDDBQqLm51YW5jZW1vYmlsaXR5Lm5ldDCCASIwDQYJKoZIhvcNAQEB
|
|
9
|
-
BQADggEPADCCAQoCggEBAMV2moXwKA1tLUVmTdM5ZaVBr9a4I2OkTIjefNdFxtuH
|
|
10
|
-
YBWKXA2eCDcy6pHk9V34HbGqAo1aEylJiXN90Y2uL43QdkAM9lPnRZRzynpPcKCh
|
|
11
|
-
VODhWa8brXT1gVeoGlh9OXZE3RiK+rPHNUUfAOfGTg7bnXmiK6Bml58SExLpQxtI
|
|
12
|
-
9Wy9tNoTWJ4v1L6bxK776qE12DvaxyFNFgJp5m0R7hQmMXeyQzSrylsjlfUcgKR/
|
|
13
|
-
O1LSxnAq7Kv3ijUxA0gKu7elWYdXI71/zRdjvNr9dSekb19rP/rcoNZsGQvT3uuc
|
|
14
|
-
JnJVdujLbmSBm9U/JWHjzOC5Yhoul4RogGX442wMmXsCAwEAAaOCAbQwggGwMB8G
|
|
15
|
-
A1UdIwQYMBaAFEJ5VBthzVUrPmPVPEhX9Z/7Rc5KMA4GA1UdDwEB/wQEAwIEsDAd
|
|
16
|
-
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwMwYDVR0RBCwwKoIUKi5udWFu
|
|
17
|
-
Y2Vtb2JpbGl0eS5uZXSCEm51YW5jZW1vYmlsaXR5Lm5ldDA9BgNVHR8ENjA0MDKg
|
|
18
|
-
MKAuhixodHRwOi8vZ3Rzc2wtY3JsLmdlb3RydXN0LmNvbS9jcmxzL2d0c3NsLmNy
|
|
19
|
-
bDAdBgNVHQ4EFgQUNuyQCo6RJvAYlmfaaSZIVfPZpiMwDAYDVR0TAQH/BAIwADBv
|
|
20
|
-
BggrBgEFBQcBAQRjMGEwKgYIKwYBBQUHMAGGHmh0dHA6Ly9ndHNzbC1vY3NwLmdl
|
|
21
|
-
b3RydXN0LmNvbTAzBggrBgEFBQcwAoYnaHR0cDovL2d0c3NsLWFpYS5nZW90cnVz
|
|
22
|
-
dC5jb20vZ3Rzc2wuY3J0MEwGA1UdIARFMEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsG
|
|
23
|
-
AQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0G
|
|
24
|
-
CSqGSIb3DQEBBQUAA4IBAQBA81miz43odjvvarBucFDKfKbhrQAWrEQB+Avri97g
|
|
25
|
-
ytN0xkfpdov0b/qLRNxm2oohqRKmKG0QdsVKfObWL1GoJrZo/YJc3IRcoBlZXUr2
|
|
26
|
-
QGZShAmAV6nBXlPAcbp+ryfLWEGRPCc3rs1TLsGrExxsLW6QcnKdnaoTuR7rWfbD
|
|
27
|
-
CnBoPFRnOgakXf1hxyNSSRgcx0oetFSL/jASD2bylRPU09eA9beZsOEcfGp4I7ON
|
|
28
|
-
+U77F36aRMgOfwE1JWiAjgcsUywHCfRo7084HtozrvUYmqgaxi2J5KQ6JOxsbOFS
|
|
29
|
-
8hAxHOOsAqEUWOje7shQBTGW30FheDKjms7yUPuYh5me
|
|
30
|
-
-----END CERTIFICATE-----
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIFLTCCBBWgAwIBAgIDAcXvMA0GCSqGSIb3DQEBBQUAMEAxCzAJBgNVBAYTAlVT
|
|
3
|
+
MRcwFQYDVQQKEw5HZW9UcnVzdCwgSW5jLjEYMBYGA1UEAxMPR2VvVHJ1c3QgU1NM
|
|
4
|
+
IENBMB4XDTEyMTAyNDEzMTA0NFoXDTE0MTEyNjE0MTA1NVowgbkxKTAnBgNVBAUT
|
|
5
|
+
IHk5Sk5Db3ZoUGJOQ2EvaUJNZE9jNGthWWhqNjhhSTliMQswCQYDVQQGEwJVUzEW
|
|
6
|
+
MBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHUGVhYm9keTEjMCEGA1UE
|
|
7
|
+
ChMaTnVhbmNlIENvbW11bmljYXRpb25zIEluYy4xETAPBgNVBAsTCE1vYmlsaXR5
|
|
8
|
+
MR0wGwYDVQQDDBQqLm51YW5jZW1vYmlsaXR5Lm5ldDCCASIwDQYJKoZIhvcNAQEB
|
|
9
|
+
BQADggEPADCCAQoCggEBAMV2moXwKA1tLUVmTdM5ZaVBr9a4I2OkTIjefNdFxtuH
|
|
10
|
+
YBWKXA2eCDcy6pHk9V34HbGqAo1aEylJiXN90Y2uL43QdkAM9lPnRZRzynpPcKCh
|
|
11
|
+
VODhWa8brXT1gVeoGlh9OXZE3RiK+rPHNUUfAOfGTg7bnXmiK6Bml58SExLpQxtI
|
|
12
|
+
9Wy9tNoTWJ4v1L6bxK776qE12DvaxyFNFgJp5m0R7hQmMXeyQzSrylsjlfUcgKR/
|
|
13
|
+
O1LSxnAq7Kv3ijUxA0gKu7elWYdXI71/zRdjvNr9dSekb19rP/rcoNZsGQvT3uuc
|
|
14
|
+
JnJVdujLbmSBm9U/JWHjzOC5Yhoul4RogGX442wMmXsCAwEAAaOCAbQwggGwMB8G
|
|
15
|
+
A1UdIwQYMBaAFEJ5VBthzVUrPmPVPEhX9Z/7Rc5KMA4GA1UdDwEB/wQEAwIEsDAd
|
|
16
|
+
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwMwYDVR0RBCwwKoIUKi5udWFu
|
|
17
|
+
Y2Vtb2JpbGl0eS5uZXSCEm51YW5jZW1vYmlsaXR5Lm5ldDA9BgNVHR8ENjA0MDKg
|
|
18
|
+
MKAuhixodHRwOi8vZ3Rzc2wtY3JsLmdlb3RydXN0LmNvbS9jcmxzL2d0c3NsLmNy
|
|
19
|
+
bDAdBgNVHQ4EFgQUNuyQCo6RJvAYlmfaaSZIVfPZpiMwDAYDVR0TAQH/BAIwADBv
|
|
20
|
+
BggrBgEFBQcBAQRjMGEwKgYIKwYBBQUHMAGGHmh0dHA6Ly9ndHNzbC1vY3NwLmdl
|
|
21
|
+
b3RydXN0LmNvbTAzBggrBgEFBQcwAoYnaHR0cDovL2d0c3NsLWFpYS5nZW90cnVz
|
|
22
|
+
dC5jb20vZ3Rzc2wuY3J0MEwGA1UdIARFMEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsG
|
|
23
|
+
AQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0G
|
|
24
|
+
CSqGSIb3DQEBBQUAA4IBAQBA81miz43odjvvarBucFDKfKbhrQAWrEQB+Avri97g
|
|
25
|
+
ytN0xkfpdov0b/qLRNxm2oohqRKmKG0QdsVKfObWL1GoJrZo/YJc3IRcoBlZXUr2
|
|
26
|
+
QGZShAmAV6nBXlPAcbp+ryfLWEGRPCc3rs1TLsGrExxsLW6QcnKdnaoTuR7rWfbD
|
|
27
|
+
CnBoPFRnOgakXf1hxyNSSRgcx0oetFSL/jASD2bylRPU09eA9beZsOEcfGp4I7ON
|
|
28
|
+
+U77F36aRMgOfwE1JWiAjgcsUywHCfRo7084HtozrvUYmqgaxi2J5KQ6JOxsbOFS
|
|
29
|
+
8hAxHOOsAqEUWOje7shQBTGW30FheDKjms7yUPuYh5me
|
|
30
|
+
-----END CERTIFICATE-----
|
data/lib/nuance/transcription.rb
CHANGED
|
@@ -20,13 +20,12 @@ module Nuance
|
|
|
20
20
|
raise ArgumentError, ':app_key must be set' if !options[:app_key]
|
|
21
21
|
raise ArgumentError, ':id must be set' if !options[:id]
|
|
22
22
|
|
|
23
|
-
@base_uri = options[:base_uri]
|
|
24
|
-
@app_id = options[:app_id]
|
|
25
|
-
@app_key = options[:app_key]
|
|
26
|
-
@id = options[:id]
|
|
23
|
+
@base_uri = options[:base_uri] || 'https://dictation.nuancemobility.net'
|
|
24
|
+
@app_id = options[:app_id] || ENV['NUANCE_APP_ID']
|
|
25
|
+
@app_key = options[:app_key] || ENV['NUANCE_APP_KEY']
|
|
26
|
+
@id = options[:id] || rand(100000000)
|
|
27
|
+
@logging = options[:logging] || false
|
|
27
28
|
@resource = "/NMDPAsrCmdServlet/dictation?appId=#{@app_id}&appKey=#{@app_key}&id=#{@id}"
|
|
28
|
-
@logging = options[:logging] || false
|
|
29
|
-
|
|
30
29
|
self
|
|
31
30
|
end
|
|
32
31
|
|
|
@@ -43,7 +42,6 @@ module Nuance
|
|
|
43
42
|
#
|
|
44
43
|
# @return [Hash] the resulting response from the Nuance API
|
|
45
44
|
def transcribe(options={}, &block)
|
|
46
|
-
@content_type = options[:content_type] || 'audio/x-wav;codec=pcm;bit=16;rate=8000'
|
|
47
45
|
@accept_topic = options[:accept_topic] || 'Dictation'
|
|
48
46
|
@accept_language = options[:language] || 'en_US'
|
|
49
47
|
@accept = options[:accept] || 'application/xml'
|
|
@@ -53,6 +51,12 @@ module Nuance
|
|
|
53
51
|
raise ArgumentError, ':file_contents must be present' if !options[:file_contents]
|
|
54
52
|
raise ArgumentError, ':language must be valid' if !language_valid?(options[:language])
|
|
55
53
|
|
|
54
|
+
if options[:content_type].nil?
|
|
55
|
+
@content_type = options[:content_type] || "audio/x-wav;codec=pcm;bit=16;rate=#{sample_rate(options[:file_contents]).to_s}"
|
|
56
|
+
else
|
|
57
|
+
@content_type = options[:content_type]
|
|
58
|
+
end
|
|
59
|
+
|
|
56
60
|
create_connection
|
|
57
61
|
|
|
58
62
|
begin
|
|
@@ -74,6 +78,19 @@ module Nuance
|
|
|
74
78
|
end
|
|
75
79
|
end
|
|
76
80
|
|
|
81
|
+
##
|
|
82
|
+
# Determines the sample rate of the file
|
|
83
|
+
#
|
|
84
|
+
# @param [Object] file_contents of the file
|
|
85
|
+
# @return [String] the sample rate
|
|
86
|
+
def sample_rate(file_contents)
|
|
87
|
+
filename = '/tmp/' + SecureRandom.uuid + '.wav'
|
|
88
|
+
IO.binwrite filename, file_contents
|
|
89
|
+
wave = WaveInfo.new filename
|
|
90
|
+
File.delete filename
|
|
91
|
+
wave.sample_rate
|
|
92
|
+
end
|
|
93
|
+
|
|
77
94
|
private
|
|
78
95
|
|
|
79
96
|
##
|
|
@@ -148,7 +165,7 @@ module Nuance
|
|
|
148
165
|
end
|
|
149
166
|
|
|
150
167
|
private
|
|
151
|
-
|
|
168
|
+
|
|
152
169
|
def process(response)
|
|
153
170
|
Hashie::Mash.new({ :status => 200, :body => response.body.split(/\r?\n/)[0] })
|
|
154
171
|
end
|
data/lib/nuance/version.rb
CHANGED
data/nuance.gemspec
CHANGED
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.add_runtime_dependency "hashie","=1.2.0"
|
|
24
24
|
spec.add_runtime_dependency "faraday", "= 0.8.7"
|
|
25
25
|
spec.add_runtime_dependency "celluloid", "= 0.12.4"
|
|
26
|
-
|
|
26
|
+
spec.add_runtime_dependency "waveinfo", "= 0.0.2"
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
28
28
|
spec.add_development_dependency "rake"
|
|
29
29
|
spec.add_development_dependency "rspec", "= 2.12.0"
|
|
@@ -57,7 +57,8 @@ describe Nuance::Transcription do
|
|
|
57
57
|
|
|
58
58
|
describe '#validations' do
|
|
59
59
|
it 'should allow a valid content type' do
|
|
60
|
-
content_types = %w{
|
|
60
|
+
content_types = %w{
|
|
61
|
+
audio/x-wav;codec=pcm;bit=16;rate=8000
|
|
61
62
|
audio/x-wav;codec=pcm;bit=16;rate=16000
|
|
62
63
|
audio/x-speex;rate=8000
|
|
63
64
|
audio/x-speex;rate=16000
|
|
@@ -199,7 +200,7 @@ describe Nuance::Transcription do
|
|
|
199
200
|
:app_key => @options[:app_key],
|
|
200
201
|
:id => @options[:id] })
|
|
201
202
|
result = nil
|
|
202
|
-
nuance_transcription.transcribe!(:file_contents => File.open('spec/DT-202c.wav').read) do |transcription|
|
|
203
|
+
nuance_transcription.transcribe!(:file_contents => File.open('spec/DT-202c.wav').read) do |transcription|
|
|
203
204
|
result = transcription
|
|
204
205
|
end
|
|
205
206
|
sleep 0.1
|
|
@@ -207,5 +208,15 @@ describe Nuance::Transcription do
|
|
|
207
208
|
result.body.should eql @transcription
|
|
208
209
|
end
|
|
209
210
|
end
|
|
211
|
+
|
|
212
|
+
describe '#audio file details' do
|
|
213
|
+
it 'should return a sample rate for the wave file' do
|
|
214
|
+
file_contents = File.open('spec/DT-202c.wav').read
|
|
215
|
+
nuance_transcription = Nuance::Transcription.new({ :app_id => @options[:app_id],
|
|
216
|
+
:app_key => @options[:app_key],
|
|
217
|
+
:id => @options[:id] })
|
|
218
|
+
nuance_transcription.sample_rate(file_contents).should eql 8000
|
|
219
|
+
end
|
|
220
|
+
end
|
|
210
221
|
end
|
|
211
222
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nuance
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-07-
|
|
13
|
+
date: 2013-07-09 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: hashie
|
|
@@ -60,6 +60,22 @@ dependencies:
|
|
|
60
60
|
- - '='
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
62
|
version: 0.12.4
|
|
63
|
+
- !ruby/object:Gem::Dependency
|
|
64
|
+
name: waveinfo
|
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
|
66
|
+
none: false
|
|
67
|
+
requirements:
|
|
68
|
+
- - '='
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: 0.0.2
|
|
71
|
+
type: :runtime
|
|
72
|
+
prerelease: false
|
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
74
|
+
none: false
|
|
75
|
+
requirements:
|
|
76
|
+
- - '='
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: 0.0.2
|
|
63
79
|
- !ruby/object:Gem::Dependency
|
|
64
80
|
name: bundler
|
|
65
81
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -263,7 +279,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
263
279
|
version: '0'
|
|
264
280
|
segments:
|
|
265
281
|
- 0
|
|
266
|
-
hash: -
|
|
282
|
+
hash: -4357327388774372871
|
|
267
283
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
284
|
none: false
|
|
269
285
|
requirements:
|
|
@@ -272,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
272
288
|
version: '0'
|
|
273
289
|
segments:
|
|
274
290
|
- 0
|
|
275
|
-
hash: -
|
|
291
|
+
hash: -4357327388774372871
|
|
276
292
|
requirements: []
|
|
277
293
|
rubyforge_project:
|
|
278
294
|
rubygems_version: 1.8.23
|