diarize-ruby 0.3.10 → 0.3.11
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/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