pihsi 0.0.2 → 0.0.3

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 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