google_speech 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -26,20 +26,22 @@ Or install it yourself as:
26
26
 
27
27
  ## Usage
28
28
 
29
- As a gem in yourt code:
29
+ As a gem in your code:
30
30
 
31
+ ```ruby
32
+ require 'google_speech'
31
33
 
32
- require 'google_speech'
33
-
34
- f = File.open '/Users/you/Downloads/audio.wav'
35
- transcriber = GoogleSpeech::Transcriber.new(f)
36
- t = transcriber.transcribe
34
+ f = File.open '/Users/you/Downloads/audio.wav'
35
+ transcriber = GoogleSpeech::Transcriber.new(f)
36
+ t = transcriber.transcribe
37
+ ```
37
38
 
38
39
  As a command line tool
39
40
 
40
41
  > google_speech somefile.wav
41
42
 
42
- Options:
43
+ ### Options:
44
+
43
45
  * language - what language is the speech in
44
46
  * chunk_duration - length in seconds for each audio chunk of the wav to send
45
47
  * overlap - chunking does not respect word boundaries; overlap can compensate
@@ -47,16 +49,18 @@ Options:
47
49
  * request_pause - sleep seconds between chunk transcription requests
48
50
  * profanity_filter - google by default filters profanity; this gem does not.
49
51
 
50
- Default option values:
51
-
52
- {
53
- :language => 'en-US',
54
- :chunk_duration => 8,
55
- :overlap => 1,
56
- :max_results => 2,
57
- :request_pause => 1,
58
- :profanity_filter => false
59
- }
52
+ ### Default option values:
53
+
54
+ ```ruby
55
+ {
56
+ :language => 'en-US',
57
+ :chunk_duration => 8,
58
+ :overlap => 1,
59
+ :max_results => 2,
60
+ :request_pause => 1,
61
+ :profanity_filter => false
62
+ }
63
+ ```
60
64
 
61
65
  ## Contributing
62
66
 
@@ -10,7 +10,7 @@ module GoogleSpeech
10
10
 
11
11
  DEFAULT_OPTIONS = {
12
12
  :language => 'en-US',
13
- :chunk_duration => 8,
13
+ :chunk_duration => 5,
14
14
  :overlap => 1,
15
15
  :max_results => 2,
16
16
  :request_pause => 1,
@@ -28,12 +28,14 @@ module GoogleSpeech
28
28
  chunk_factory.each{ |chunk|
29
29
  result = chunk.to_hash
30
30
  transcript = transcribe_data(chunk.data)
31
+ next unless transcript
32
+ # puts "transcript: #{transcript.inspect}\n\n"
31
33
  hypothesis = transcript['hypotheses'].first || Hash.new("")
32
34
  result[:text] = hypothesis['utterance']
33
35
  result[:confidence] = hypothesis['confidence']
34
36
  @results << result
35
37
 
36
- # puts "\n#{result[:start_time]} - #{result[:start_time].to_i + result[:duration].to_i}: #{(result[:confidence].to_f * 100).to_i}%: #{result[:text]}"
38
+ # puts "\n#{result[:start_time]}: #{(result[:confidence].to_f * 100).to_i}%: #{result[:text]}"
37
39
 
38
40
  sleep(options[:request_pause].to_i)
39
41
  }
@@ -66,8 +68,10 @@ module GoogleSpeech
66
68
  while(!result && retry_count < retry_max)
67
69
  connection = Excon.new(url)
68
70
  response = connection.request(params)
71
+ # puts "response: #{response.inspect}\n\n"
69
72
  if response.status.to_s.start_with?('2')
70
- result = JSON.parse(response.body)
73
+ result = JSON.parse(response.body)
74
+ # puts "results: #{result.inspect}\n\n"
71
75
  else
72
76
  sleep(1)
73
77
  retry_count += 1
@@ -23,7 +23,10 @@ module GoogleSpeech
23
23
  def trim_to_flac(wav_path, duration, flac_path, start, length)
24
24
  check_local_file(wav_path)
25
25
 
26
- command = "sox -t wav '#{wav_path}' -t flac '#{flac_path}' trim #{start.to_i} #{length.to_i} rate 16k"
26
+ command = "sox -t wav '#{wav_path}' -r 16000 -c 1 -t flac '#{flac_path}' trim #{start.to_i} #{length.to_i} compand .5,2 -80,-80,-75,-50,-30,-15,0,0 norm -0.1"
27
+
28
+ # command = "sox -t wav '#{wav_path}' -t flac '#{flac_path}' trim #{start.to_i} #{length.to_i} rate 16k"
29
+
27
30
  out, err = run_command(command)
28
31
  response = out + err
29
32
  response.split("\n").each{ |l| raise("trim_to_flac: error cmd: '#{command}'\nout: '#{response}'") if l =~ SOX_ERROR_RE }
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module GoogleSpeech
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_speech
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
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-03-09 00:00:00.000000000 Z
12
+ date: 2013-09-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
@@ -97,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: 4464618755073906790
100
+ hash: -4222726659936394268
101
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  none: false
103
103
  requirements:
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  segments:
108
108
  - 0
109
- hash: 4464618755073906790
109
+ hash: -4222726659936394268
110
110
  requirements: []
111
111
  rubyforge_project:
112
112
  rubygems_version: 1.8.23