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