diarize-ruby 0.3.10 → 0.3.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/diarize/segment.rb +17 -1
- data/lib/diarize/speaker.rb +2 -2
- data/lib/diarize/version.rb +1 -1
- data/test/segment_test.rb +20 -0
- data/test/speaker_test.rb +31 -1
- data/test/version_test.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 862081b1f139a2d177181be622086de18018aabd
|
4
|
+
data.tar.gz: 9f10cbcc0741b6ad845b2d5df000420e71aa4807
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6543825ebf8a9909e3d49bfa81afd8f7146b426fd5bbf54fa1c3bc5561433625f384678c077bd63ecaa90baedd783aec2c2e3a1a09c372ee6d92827f36f7b6bc
|
7
|
+
data.tar.gz: 52f7db8c0bb30e16a13f61de11bc55ad43c26f7e3d2670a68889cd798c149d621dfa5e2e0260dacb89fe96a6e100e983b3e7a4893bcc84579fa3cd6f1a7bb643
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## [v0.3.11] - 2016-11-30
|
2
|
+
|
3
|
+
- Add `Segment#as_json` and `Segment#to_json`
|
4
|
+
- Raise error when saving normalized model without force=true
|
5
|
+
|
6
|
+
## [v0.3.10] - 2016-11-30
|
7
|
+
|
8
|
+
- Remove `SuperVector#sha`
|
9
|
+
- SuperVector initialize from arrays
|
10
|
+
|
1
11
|
## [v0.3.9] - 2016-11-29
|
2
12
|
|
3
13
|
- Segment instances return speaker_id
|
data/lib/diarize/segment.rb
CHANGED
@@ -34,10 +34,26 @@ module Diarize
|
|
34
34
|
{
|
35
35
|
'ws:start' => start,
|
36
36
|
'ws:duration' => duration,
|
37
|
-
'ws:gender' =>
|
37
|
+
'ws:gender' => speaker_gender,
|
38
38
|
'ws:bandwidth' => bandwidth,
|
39
39
|
'ws:speaker' => speaker,
|
40
40
|
}
|
41
41
|
end
|
42
|
+
|
43
|
+
def as_json
|
44
|
+
{
|
45
|
+
'start' => start,
|
46
|
+
'duration' => duration,
|
47
|
+
'gender' => speaker_gender,
|
48
|
+
'bandwidth' => bandwidth,
|
49
|
+
'speaker_id' => speaker_id
|
50
|
+
}.tap {|s|
|
51
|
+
s['speaker'] = speaker.as_json if speaker
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def to_json
|
56
|
+
as_json.to_json
|
57
|
+
end
|
42
58
|
end
|
43
59
|
end
|
data/lib/diarize/speaker.rb
CHANGED
@@ -94,8 +94,8 @@ module Diarize
|
|
94
94
|
@mean_log_likelihood = mll
|
95
95
|
end
|
96
96
|
|
97
|
-
def save_model(filename)
|
98
|
-
|
97
|
+
def save_model(filename, force = false)
|
98
|
+
raise RuntimeError, "normalized model must be saved with force=true" if !force && normalized?
|
99
99
|
write_gmm(filename, @model)
|
100
100
|
end
|
101
101
|
|
data/lib/diarize/version.rb
CHANGED
data/test/segment_test.rb
CHANGED
@@ -35,4 +35,24 @@ class SegmentTest < Test::Unit::TestCase
|
|
35
35
|
assert_equal segment.uri, URI('http://example.com#t=2,7')
|
36
36
|
end
|
37
37
|
|
38
|
+
def test_as_json
|
39
|
+
segment = Diarize::Segment.new(OpenStruct.new({:base_uri => 'http://example.com'}), 2, 5, 'm', nil, 's1')
|
40
|
+
model_file = File.join(File.dirname(__FILE__), 'data', 'speaker1.gmm')
|
41
|
+
speaker = Diarize::Speaker.new(URI.parse(""), "F", model_file)
|
42
|
+
speaker.mean_log_likelihood = 0.9
|
43
|
+
segment.expects(:speaker).returns(speaker).twice
|
44
|
+
as_json = segment.as_json
|
45
|
+
assert_equal true, as_json.has_key?('start')
|
46
|
+
assert_equal true, as_json.has_key?('duration')
|
47
|
+
assert_equal true, as_json.has_key?('gender')
|
48
|
+
assert_equal true, as_json.has_key?('bandwidth')
|
49
|
+
assert_equal true, as_json.has_key?('speaker_id')
|
50
|
+
assert_equal true, as_json.has_key?('speaker')
|
51
|
+
|
52
|
+
assert_equal true, as_json['speaker'].has_key?('gender')
|
53
|
+
assert_equal true, as_json['speaker'].has_key?('model')
|
54
|
+
assert_equal true, as_json['speaker'].has_key?('mean_log_likelihood')
|
55
|
+
assert_equal true, as_json['speaker'].has_key?('supervector_hash')
|
56
|
+
end
|
57
|
+
|
38
58
|
end
|
data/test/speaker_test.rb
CHANGED
@@ -53,12 +53,42 @@ class SpeakerTest < Test::Unit::TestCase
|
|
53
53
|
def test_save_and_load_model
|
54
54
|
speaker = Diarize::Speaker.ubm
|
55
55
|
tmp = Tempfile.new(['diarize-test', '.gmm'])
|
56
|
-
speaker.save_model(tmp.path)
|
56
|
+
speaker.save_model(tmp.path, true)
|
57
57
|
model = Diarize::Speaker.load_model(tmp.path)
|
58
58
|
assert_equal speaker.model.components.get(0).mean(0), model.components.get(0).mean(0)
|
59
59
|
File.delete(tmp.path)
|
60
60
|
end
|
61
61
|
|
62
|
+
def test_should_raise_error_when_saving_normalized_model_without_force
|
63
|
+
speaker = Diarize::Speaker.new(nil, nil, File.join(File.dirname(__FILE__), 'data', 'speaker1.gmm'))
|
64
|
+
tmp = Tempfile.new(['diarize-test', '.gmm'])
|
65
|
+
|
66
|
+
# not normalized, forced false
|
67
|
+
assert_nothing_raised {
|
68
|
+
speaker.save_model(tmp.path)
|
69
|
+
File.delete(tmp.path)
|
70
|
+
}
|
71
|
+
|
72
|
+
# not normalized, forced true
|
73
|
+
assert_nothing_raised {
|
74
|
+
speaker.save_model(tmp.path, true)
|
75
|
+
File.delete(tmp.path)
|
76
|
+
}
|
77
|
+
|
78
|
+
# normalized, forced false
|
79
|
+
assert_raise {
|
80
|
+
speaker.normalize!
|
81
|
+
speaker.save_model(tmp.path, false)
|
82
|
+
}
|
83
|
+
|
84
|
+
# normalized, forced true
|
85
|
+
assert_nothing_raised {
|
86
|
+
speaker.normalize!
|
87
|
+
speaker.save_model(tmp.path, true)
|
88
|
+
File.delete(tmp.path)
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
62
92
|
def test_divergence_returns_nil_if_one_model_is_empty
|
63
93
|
speaker1 = Diarize::Speaker.ubm
|
64
94
|
speaker2 = Diarize::Speaker.ubm
|
data/test/version_test.rb
CHANGED