class Diarize::SuperVector
Attributes
vector[R]
Public Class Methods
divergence(sv1, sv2)
click to toggle source
# File lib/diarize/super_vector.rb, line 54 def divergence(sv1, sv2) return ubm_gaussian_weights.mul(((sv1.vector - sv2.vector) ** 2) / ubm_covariance).sum end
generate_from_model(model)
click to toggle source
# File lib/diarize/super_vector.rb, line 11 def generate_from_model(model) # Generates a supervector from a LIUM GMM dim = model.nb_of_components * model.components.get(0).dim vector = GSL::Vector::alloc(dim) model.nb_of_components.times do |k| gaussian = model.components.get(k) gaussian.dim.times do |i| vector[k * gaussian.dim + i] = gaussian.mean(i) end end SuperVector.new(vector) end
new(vector)
click to toggle source
# File lib/diarize/super_vector.rb, line 5 def initialize(vector) @vector = vector end
ubm_covariance()
click to toggle source
# File lib/diarize/super_vector.rb, line 39 def ubm_covariance # Returns a vector of diagonal covariances, same dimension as speaker's super vectors @@ubm_covariance ||= begin ubm = Speaker.ubm cov = GSL::Vector::alloc(ubm.supervector.dim) ubm.model.nb_of_components.times do |k| gaussian = ubm.model.components.get(k) gaussian.dim.times do |i| cov[k * gaussian.dim + i] = gaussian.getCovariance(i, i) end end cov end end
ubm_gaussian_weights()
click to toggle source
# File lib/diarize/super_vector.rb, line 24 def ubm_gaussian_weights # Returns a vector of gaussian weights, same dimension as speaker's super vectors @@ubm_gaussian_weights ||= begin ubm = Speaker.ubm weights = GSL::Vector::alloc(ubm.supervector.dim) ubm.model.nb_of_components.times do |k| gaussian = ubm.model.components.get(k) gaussian.dim.times do |i| weights[k * gaussian.dim + i] = gaussian.weight end end weights end end
Public Instance Methods
dim()
click to toggle source
# File lib/diarize/super_vector.rb, line 60 def dim @vector.size end
hash()
click to toggle source
# File lib/diarize/super_vector.rb, line 64 def hash @vector.to_a.hash end
to_a()
click to toggle source
# File lib/diarize/super_vector.rb, line 68 def to_a @vector.to_a end