Call Center SDK  1.11.3
verify_stream.h
1 /* Copyright 2019 ID R&D Inc. All Rights Reserved. */
2 
3 #pragma once
4 
5 #include <iostream>
6 #include <memory>
7 #include <vector>
8 
9 #include <voicesdk/core/config.h>
10 #include <voicesdk/core/common/intervals.h>
11 #include <voicesdk/verify/verify.h>
12 
13 namespace voicesdk {
14 
23 
28 
29  VerifyStreamResult(const AudioInterval& audioInterval_, const VerifyResult& verifyResult_) :
30  audioInterval(audioInterval_),
31  verifyResult(verifyResult_) {}
32 
33  friend std::ostream &operator<<(std::ostream& os, const VerifyStreamResult& obj) {
34  os << "StreamVerifyResult["
35  << "audioInterval: " << obj.audioInterval << ", "
36  << "verifyResult: " << obj.verifyResult << "]";
37  return os;
38  }
39 
40  bool operator==(const VerifyStreamResult& other) const {
41  return audioInterval == other.audioInterval && verifyResult == other.verifyResult;
42  }
43  };
44 
45 
49  class VOICE_SDK_API VoiceVerifyStream {
50  public:
51  using Ptr = std::shared_ptr<VoiceVerifyStream>;
52 
70  static Ptr create(
71  VoiceTemplateFactory::Ptr voiceTemplateFactory,
72  VoiceTemplateMatcher::Ptr voiceTemplateMatcher,
73  const std::vector<VoiceTemplate::Ptr>& voiceTemplates,
74  size_t sampleRate,
75  size_t audioContextLengthSeconds = 10,
76  float windowLengthSeconds = 3.0f
77  );
78 
82  virtual void reset() = 0;
83 
93  virtual void addSamples(const uint8_t *pcm16Bytes, size_t bytesNum) = 0;
94 
104  virtual void addSamples(const int16_t *pcm16Samples, size_t samplesNum) = 0;
105 
115  virtual void addSamples(const float *floatSamples, size_t samplesNum) = 0;
116 
121  virtual void finalize() = 0;
122 
127  virtual bool hasVerifyResults() const = 0;
128 
136  virtual std::vector<VerifyStreamResult> getVerifyResult() = 0;
137 
148 
149  virtual ~VoiceVerifyStream() = default;
150  };
151 
155  class VOICE_SDK_API VoiceVerifyStreamOpus {
156  public:
157  using Ptr = std::shared_ptr<VoiceVerifyStreamOpus>;
158 
175  static Ptr create(
176  VoiceTemplateFactory::Ptr voiceTemplateFactory,
177  VoiceTemplateMatcher::Ptr voiceTemplateMatcher,
178  VoiceTemplate::Ptr voiceTemplate,
179  size_t sampleRate,
180  size_t audioContextLengthSeconds = 10
181  );
182 
186  virtual void reset() = 0;
187 
198  virtual void addPacket(const uint8_t *bytes, size_t bytesNum) = 0;
199 
204  virtual void finalize() = 0;
205 
210  virtual bool hasVerifyResults() const = 0;
211 
220 
221  virtual ~VoiceVerifyStreamOpus() = default;
222  };
223 }
Class for continuous voice verification using Opus audio stream.
Definition: verify_stream.h:155
virtual bool hasVerifyResults() const =0
Checks if there are available verification results in output queue.
virtual void reset()=0
Resets stream state.
virtual VerifyStreamResult getVerifyResult()=0
Retrieves verification result from output queue. Use hasVerifyResult() to know if there are available...
virtual void finalize()=0
Finalizes input audio stream to process remaining audio samples and produce result if it's possible.
static Ptr create(VoiceTemplateFactory::Ptr voiceTemplateFactory, VoiceTemplateMatcher::Ptr voiceTemplateMatcher, VoiceTemplate::Ptr voiceTemplate, size_t sampleRate, size_t audioContextLengthSeconds=10)
Factory method.
virtual void addPacket(const uint8_t *bytes, size_t bytesNum)=0
Adds Opus packet to process.
Class for continuous voice verification using audio stream.
Definition: verify_stream.h:49
virtual void addSamples(const int16_t *pcm16Samples, size_t samplesNum)=0
Adds PCM16 audio samples to process.
virtual void addSamples(const uint8_t *pcm16Bytes, size_t bytesNum)=0
Adds byte representation of PCM16 audio samples to process.
virtual void finalize()=0
Finalizes input audio stream to process remaining audio samples and produce result if it's possible.
virtual void reset()=0
Resets stream state.
virtual void addSamples(const float *floatSamples, size_t samplesNum)=0
Adds float audio samples (in [-1; 1] range) to process.
virtual bool hasVerifyResults() const =0
Checks if there are available verification results in output queue.
static Ptr create(VoiceTemplateFactory::Ptr voiceTemplateFactory, VoiceTemplateMatcher::Ptr voiceTemplateMatcher, const std::vector< VoiceTemplate::Ptr > &voiceTemplates, size_t sampleRate, size_t audioContextLengthSeconds=10, float windowLengthSeconds=3.0f)
Factory method.
virtual std::vector< VerifyStreamResult > getVerifyResult()=0
Retrieves verification result from output queue containing one verify stream result for each referenc...
virtual VerifyStreamResult getVerifyResultForOneTemplate()=0
Retrieves verification result from output queue consisting of single verify stream result correspondi...
Structure representing interval of audio data.
Definition: intervals.h:57
Structure representing voice verification result.
Definition: verify.h:17
Structure containing streaming voice verification result.
Definition: verify_stream.h:18
const AudioInterval audioInterval
Audio interval which verify result refers to.
Definition: verify_stream.h:22
const VerifyResult verifyResult
Voice verification result.
Definition: verify_stream.h:27