non-streaming-speaker-diarization.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /** @typedef {import('./types').OfflineSpeakerDiarizationConfig} OfflineSpeakerDiarizationConfig */
  2. /** @typedef {import('./types').OfflineSpeakerDiarizationHandle} OfflineSpeakerDiarizationHandle */
  3. /** @typedef {import('./types').SpeakerDiarizationSegment} SpeakerDiarizationSegment */
  4. const addon = require('./addon.js');
  5. class OfflineSpeakerDiarization {
  6. /**
  7. * @param {OfflineSpeakerDiarizationConfig} config
  8. */
  9. constructor(config) {
  10. this.handle = addon.createOfflineSpeakerDiarization(config);
  11. this.config = config;
  12. this.sampleRate = addon.getOfflineSpeakerDiarizationSampleRate(this.handle);
  13. }
  14. /**
  15. * @param {Float32Array} samples - 1-D float32 array in [-1, 1]
  16. * @returns {SpeakerDiarizationSegment[]}
  17. */
  18. process(samples) {
  19. return addon.offlineSpeakerDiarizationProcess(this.handle, samples);
  20. }
  21. /**
  22. * Set clustering configuration.
  23. * @param {{clustering: import('./types').FastClusteringConfig}} config
  24. */
  25. setConfig(config) {
  26. addon.offlineSpeakerDiarizationSetConfig(this.handle, config);
  27. this.config.clustering = config.clustering;
  28. }
  29. }
  30. module.exports = {
  31. OfflineSpeakerDiarization,
  32. }