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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6538efc1cab1c18e656dcc50c1e2b57d8f9f38a7
4
- data.tar.gz: d86715c3e757994d859c9847e013c5501895a5f1
3
+ metadata.gz: 862081b1f139a2d177181be622086de18018aabd
4
+ data.tar.gz: 9f10cbcc0741b6ad845b2d5df000420e71aa4807
5
5
  SHA512:
6
- metadata.gz: 0762b0b955406e9c43b95e44331f518379c90a3403addcb8478bdae93746095ed060805f4e128bfd3a7640118ba821b506e467d99b3dfe3679922056eeaafac4
7
- data.tar.gz: 0a38dcab217b7b45595d734434be3ffbdf9755c7d869bb93a49198b288b45b59d2dcdb078213d2626fc67d70bb7d955b0eeaf5982a7cb3482ea647aa9af5328d
6
+ metadata.gz: 6543825ebf8a9909e3d49bfa81afd8f7146b426fd5bbf54fa1c3bc5561433625f384678c077bd63ecaa90baedd783aec2c2e3a1a09c372ee6d92827f36f7b6bc
7
+ data.tar.gz: 52f7db8c0bb30e16a13f61de11bc55ad43c26f7e3d2670a68889cd798c149d621dfa5e2e0260dacb89fe96a6e100e983b3e7a4893bcc84579fa3cd6f1a7bb643
@@ -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
@@ -34,10 +34,26 @@ module Diarize
34
34
  {
35
35
  'ws:start' => start,
36
36
  'ws:duration' => duration,
37
- 'ws:gender' => 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
@@ -94,8 +94,8 @@ module Diarize
94
94
  @mean_log_likelihood = mll
95
95
  end
96
96
 
97
- def save_model(filename)
98
- # TODO perhaps a warning if a normalized model is being saved?
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
 
@@ -1,3 +1,3 @@
1
1
  module Diarize
2
- VERSION = "0.3.10"
2
+ VERSION = "0.3.11"
3
3
  end
@@ -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
@@ -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
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  class VersionTest < Test::Unit::TestCase
4
4
 
5
5
  def test_current_version
6
- assert_equal "0.3.10", Diarize::VERSION
6
+ assert_equal "0.3.11", Diarize::VERSION
7
7
  end
8
8
 
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diarize-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yves Raimond