att_speech 0.0.1 → 0.0.2
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/README.md +10 -1
- data/VERSION +1 -1
- data/lib/att_speech/att_speech.rb +7 -3
- data/lib/att_speech/version.rb +1 -1
- data/spec/att_speech_spec.rb +11 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# att_speech
|
2
2
|
|
3
|
+

|
4
|
+
|
3
5
|
A Ruby library for consuming the AT&T [Speech API](https://developer.att.com/developer/apiDetailPage.jsp?passedItemId=10700023) for speech to text. API details may be found [here](http://developer.att.com/developer/apiDetailPage.jsp?passedItemId=10900039).
|
4
6
|
|
5
7
|
## Installation
|
@@ -18,7 +20,7 @@ secret_key = 'bar'
|
|
18
20
|
|
19
21
|
att_speech = ATTSpeech.new(api_key, secret_key)
|
20
22
|
|
21
|
-
#
|
23
|
+
# Blocking operation
|
22
24
|
p att_speech.speech_to_text('bostonSeltics.wav', type='audio/wav')
|
23
25
|
#<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
|
24
26
|
|
@@ -26,6 +28,13 @@ p att_speech.speech_to_text('bostonSeltics.wav', type='audio/wav')
|
|
26
28
|
future = att_speech.future(:speech_to_text, 'bostinSeltics.wav', type='audio/wav')
|
27
29
|
p future.value
|
28
30
|
#<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
|
31
|
+
|
32
|
+
# Non-blocking operation that will call a block when the transcrption is returned
|
33
|
+
# Note: Remember, this is a concurrent operation so don't pass self and avoid mutable objects in the block
|
34
|
+
# from the calling context, better to have discreet actions contained in the block, such as inserting in a
|
35
|
+
# datastore or POSTing to a REST webservice as a callback
|
36
|
+
att_speech.speech_to_text!('spec/spec_helper.rb') { |transcription| p transcription }
|
37
|
+
#<Hashie::Mash recognition=#<Hashie::Mash n_best=#<Hashie::Mash confidence=1 grade="accept" hypothesis="Boston celtics." language_id="en-us" result_text="Boston celtics." word_scores=[1, 1] words=["Boston", "celtics."]> response_id="452d848c6d1a4be3f2bc987e5201ae38">>
|
29
38
|
```
|
30
39
|
|
31
40
|
## Copyright
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
@@ -13,6 +13,7 @@ class ATTSpeech
|
|
13
13
|
#
|
14
14
|
# @return [Object] an instance of ATTSpeech
|
15
15
|
def initialize(api_key, secret_key, base_url='https://api.att.com')
|
16
|
+
@signaled = false
|
16
17
|
@api_key = api_key
|
17
18
|
@secret_key = secret_key
|
18
19
|
@base_url = base_url
|
@@ -32,9 +33,10 @@ class ATTSpeech
|
|
32
33
|
# @param [String] file_contents to be processed
|
33
34
|
# @param [String] type of file to be processed, may be audio/wav, application/octet-stream or audio/amr
|
34
35
|
# @param [String] speech_context to use to evaluate the audio Generic, UVerseEPG, BusinessSearch, Websearch, SMS, Voicemail, QuestionAndAnswer
|
36
|
+
# @param [Block] block to be called when the transcription completes
|
35
37
|
#
|
36
38
|
# @return [Hash] the resulting response from the AT&T Speech API
|
37
|
-
def speech_to_text(file_contents, type='audio/wav', speech_context='Generic')
|
39
|
+
def speech_to_text(file_contents, type='audio/wav', speech_context='Generic', &block)
|
38
40
|
resource = "/rest/1/SpeechToText"
|
39
41
|
|
40
42
|
if type == "application/octet-stream"
|
@@ -49,14 +51,16 @@ class ATTSpeech
|
|
49
51
|
:Content_Type => type,
|
50
52
|
:Accept => 'application/json'
|
51
53
|
|
52
|
-
process_response(response)
|
54
|
+
result = process_response(response)
|
55
|
+
block.call result if block_given?
|
56
|
+
result
|
53
57
|
rescue => e
|
54
58
|
raise RuntimeError, e.to_s
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
58
62
|
private
|
59
|
-
|
63
|
+
|
60
64
|
##
|
61
65
|
# Creates the Faraday connection object
|
62
66
|
def create_connection
|
data/lib/att_speech/version.rb
CHANGED
data/spec/att_speech_spec.rb
CHANGED
@@ -42,10 +42,20 @@ describe "AttSpeech" do
|
|
42
42
|
future.instance_of?(Celluloid::Future).should eql true
|
43
43
|
end
|
44
44
|
|
45
|
-
it "should allow us to
|
45
|
+
it "should allow us to use a future to process an audio file" do
|
46
46
|
future = att_speech.future(:speech_to_text, 'spec/spec_helper.rb')
|
47
47
|
future.value[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
|
48
48
|
future.value[:recognition][:n_best][:confidence].should eql 1
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
describe 'non-blocking call with a block' do
|
53
|
+
it "should allow us to use a future to process an audio file and pass a block" do
|
54
|
+
result = nil
|
55
|
+
att_speech.speech_to_text!('spec/spec_helper.rb') { |transcription| result = transcription }
|
56
|
+
sleep 0.5
|
57
|
+
result[:recognition][:response_id].should eql '2b0bdcf4301f5c4aba57e2765b59bcbe'
|
58
|
+
result[:recognition][:n_best][:confidence].should eql 1
|
59
|
+
end
|
60
|
+
end
|
51
61
|
end
|