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 +4 -4
- data/.travis.yml +9 -0
- data/README.md +3 -1
- data/Rakefile +2 -0
- data/ext/pocket_sphinx/extconf.rb +4 -2
- data/ext/pocket_sphinx/pocket_sphinx.c +32 -8
- data/lib/pihsi/version.rb +1 -1
- data/pihsi.gemspec +1 -1
- data/spec/speech_recognizer_spec.rb +4 -4
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a9fe7a19443c847fddb1f9c00738cdb53e44e65
|
4
|
+
data.tar.gz: 64b2b6f1f7f2266c287cdfe9f7d0eaf5841140e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8656fa29997992a8e4b65ff2b6fe14b5237ee2ee0f040cbdea66482590270c054ab7f7935ff78799a9eea109c18705a2b0bc4fe7a9111e2de7d9179ed95c8b0f
|
7
|
+
data.tar.gz: 4a49ce9f911275b8642af3aa6cd74f19c14594527c20f62aa3371c5ebb2711f99410967e1143b2a646beb004a6517e00cfed63eb2ecdfe0e466f111570e9d0f9
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Pihsi
|
2
2
|
|
3
|
+
[](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/
|
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
@@ -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
|
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
|
-
|
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
|
-
|
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,
|
38
|
+
rv = ps_process_raw(ps, c_data, data_length, FALSE, FALSE);
|
24
39
|
rv = ps_end_utt(ps);
|
25
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
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
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.
|
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(
|
5
|
-
subject { instance.recognize(
|
4
|
+
describe '#recognize(data)' do
|
5
|
+
subject { instance.recognize(data) }
|
6
6
|
|
7
|
-
context 'when
|
8
|
-
let(:
|
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.
|
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-
|
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.
|
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.
|
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
|