pihsi 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 476ee4a5c97cca36a91e30b9ab3b4e5b821ad63f
4
- data.tar.gz: 40195a7c1873796cb245e6511b76842cfa4c279e
3
+ metadata.gz: 5a9fe7a19443c847fddb1f9c00738cdb53e44e65
4
+ data.tar.gz: 64b2b6f1f7f2266c287cdfe9f7d0eaf5841140e3
5
5
  SHA512:
6
- metadata.gz: 4a9e8409bf6bc3d6a68a6a78029413f3f3f3836734b3c94ff05db046c3b17f06861a37bf460c73a6c7e0ac1c2b31244843b038ef788fd108455c72263a8a5393
7
- data.tar.gz: f66b6ac970d69479f38d4b945a56e7af5d4d40b232974bd7660e7098723febacbb1c5b189d522269120691a5211bf8fdd9e3eaaef33aaa155822f26117208b8c
6
+ metadata.gz: 8656fa29997992a8e4b65ff2b6fe14b5237ee2ee0f040cbdea66482590270c054ab7f7935ff78799a9eea109c18705a2b0bc4fe7a9111e2de7d9179ed95c8b0f
7
+ data.tar.gz: 4a49ce9f911275b8642af3aa6cd74f19c14594527c20f62aa3371c5ebb2711f99410967e1143b2a646beb004a6517e00cfed63eb2ecdfe0e466f111570e9d0f9
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - rbx-2.2.7
7
+ before_install:
8
+ - sudo apt-get update
9
+ - sudo apt-get install libpocketsphinx-dev libsphinxbase-dev
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Pihsi
2
2
 
3
+ [![Build Status](https://travis-ci.org/siegfried/pihsi.svg?branch=master)](https://travis-ci.org/siegfried/pihsi)
4
+
3
5
  Pihsi is a Ruby Speech Recognition toolkit based on [PocketSphinx](http://cmusphinx.sourceforge.net).
4
6
 
5
7
  ## Installation
@@ -34,7 +36,7 @@ recognizer.recognize string_buffer
34
36
 
35
37
  ## Contributing
36
38
 
37
- 1. Fork it ( https://github.com/[my-github-username]/pihsi/fork )
39
+ 1. Fork it ( https://github.com/siegfried/pihsi/fork )
38
40
  2. Create your feature branch (`git checkout -b my-new-feature`)
39
41
  3. Commit your changes (`git commit -am 'Add some feature'`)
40
42
  4. Push to the branch (`git push origin my-new-feature`)
data/Rakefile CHANGED
@@ -12,3 +12,5 @@ RSpec::Core::RakeTask.new do |t|
12
12
  end
13
13
 
14
14
  task :spec => :compile
15
+
16
+ task default: %w[spec]
@@ -1,9 +1,11 @@
1
1
  require 'mkmf'
2
2
 
3
- unless find_header 'pocketsphinx_export.h', '/usr/local/include/pocketsphinx'
3
+ unless find_header 'pocketsphinx_export.h', '/usr/local/include/pocketsphinx', '/usr/include/pocketsphinx'
4
4
  abort 'cannot find pocketsphinx, please install it.'
5
5
  end
6
- find_header 'cmd_ln.h', '/usr/local/include/sphinxbase'
6
+ unless find_header 'cmd_ln.h', '/usr/local/include/sphinxbase', '/usr/include/sphinxbase'
7
+ abort 'cannot find sphinxbase, please install it.'
8
+ end
7
9
  find_library 'pocketsphinx', 'ps_init'
8
10
  find_library 'sphinxbase', 'cmd_ln_init'
9
11
 
@@ -1,33 +1,57 @@
1
1
  #include <ruby.h>
2
2
  #include <pocketsphinx.h>
3
3
 
4
- VALUE recognize(VALUE self, VALUE string_buffer) {
4
+ VALUE recognize(VALUE self, VALUE data) {
5
5
  char const *hyp, *uttid;
6
6
  int rv;
7
7
  int32 score;
8
8
  ps_decoder_t *ps;
9
9
  cmd_ln_t *config;
10
10
 
11
+ int data_length = RARRAY_LEN(data);
12
+ int16 *c_data = malloc(sizeof(int16) * data_length);
13
+
11
14
  char *hmm = RSTRING_PTR(rb_funcall(self, rb_intern("hmm"), 0));
12
15
  char *lm = RSTRING_PTR(rb_funcall(self, rb_intern("lm"), 0));
13
16
  char *dict = RSTRING_PTR(rb_funcall(self, rb_intern("dict"), 0));
17
+
18
+ int i;
19
+ for(i = 0; i < data_length; i++) {
20
+ c_data[i] = NUM2SHORT(rb_ary_entry(data, i));
21
+ }
22
+
14
23
  config = cmd_ln_init(NULL, ps_args(), TRUE, "-hmm", hmm, "-lm", lm, "-dict", dict, "-logfn", "/dev/null", NULL);
15
- if (config == NULL)
24
+
25
+ if (config == NULL) {
26
+ free(c_data);
16
27
  rb_raise(rb_eStandardError, "configuration might be wrong");
28
+ }
17
29
 
18
30
  ps = ps_init(config);
19
31
  rv = ps_start_utt(ps, "goforward");
20
- if (rv < 0)
32
+
33
+ if (rv < 0) {
34
+ free(c_data);
21
35
  rb_raise(rb_eStandardError, "cannot start utterance");
36
+ }
22
37
 
23
- rv = ps_process_raw(ps, (const int16 *) RSTRING_PTR(string_buffer), RSTRING_LEN(string_buffer) / 2, FALSE, FALSE);
38
+ rv = ps_process_raw(ps, c_data, data_length, FALSE, FALSE);
24
39
  rv = ps_end_utt(ps);
25
- if (rv < 0)
40
+
41
+ if (rv < 0) {
42
+ free(c_data);
26
43
  rb_raise(rb_eStandardError, "cannot end utterance");
44
+ }
45
+
27
46
  hyp = ps_get_hyp(ps, &score, &uttid);
28
- if (hyp == NULL)
29
- rb_raise(rb_eStandardError, "no hypothesis string");
30
- return rb_str_new2(hyp);
47
+
48
+ free(c_data);
49
+
50
+ if (hyp == NULL) {
51
+ return Qnil;
52
+ } else {
53
+ return rb_str_new2(hyp);
54
+ }
31
55
  }
32
56
 
33
57
  void Init_pocket_sphinx() {
data/lib/pihsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pihsi
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/pihsi.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
  spec.extensions = %w[ext/pocket_sphinx/extconf.rb]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "bundler", "~> 1.6"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "rspec", "~> 3"
25
25
  spec.add_development_dependency "factory_girl", "~> 4.0"
@@ -1,11 +1,11 @@
1
1
  RSpec.describe Pihsi::SpeechRecognizer do
2
2
  let(:instance) { build :speech_recognizer }
3
3
 
4
- describe '#recognize(string_buffer)' do
5
- subject { instance.recognize(string_buffer) }
4
+ describe '#recognize(data)' do
5
+ subject { instance.recognize(data) }
6
6
 
7
- context 'when string_buffer is the content of goforward.raw' do
8
- let(:string_buffer) { File.read 'spec/fixtures/goforward.raw' }
7
+ context 'when data is the content of goforward.raw' do
8
+ let(:data) { File.read('spec/fixtures/goforward.raw').unpack('s*') }
9
9
 
10
10
  it { should eq "go forward ten meters" }
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pihsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zhi-Qiang Lei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-22 00:00:00.000000000 Z
11
+ date: 2014-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +90,7 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - ".gitignore"
92
92
  - ".rspec"
93
+ - ".travis.yml"
93
94
  - Gemfile
94
95
  - LICENSE.txt
95
96
  - README.md