VoiceSDK  5.0.2
verify_stream.h
Go to the documentation of this file.
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>
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 
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 
147  virtual VerifyStreamResult getVerifyResultForOneTemplate() = 0;
148 
149  virtual ~VoiceVerifyStream() = default;
150  };
151 
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 
219  virtual VerifyStreamResult getVerifyResult() = 0;
220 
221  virtual ~VoiceVerifyStreamOpus() = default;
222  };
223 }
bool operator==(const VerifyStreamResult &other) const
Definition: verify_stream.h:40
VerifyStreamResult(const AudioInterval &audioInterval_, const VerifyResult &verifyResult_)
Definition: verify_stream.h:29
const AudioInterval audioInterval
Audio interval which verify result refers to.
Definition: verify_stream.h:22
friend std::ostream & operator<<(std::ostream &os, const VerifyStreamResult &obj)
Definition: verify_stream.h:33
std::shared_ptr< VoiceTemplateFactory > Ptr
Definition: verify.h:135
Structure representing interval of audio data.
Definition: intervals.h:57
Class for continuous voice verification using audio stream.
Definition: verify_stream.h:49
Definition: intervals.h:8
Structure containing streaming voice verification result.
Definition: verify_stream.h:18
std::shared_ptr< VoiceVerifyStream > Ptr
Definition: verify_stream.h:51
std::shared_ptr< VoiceTemplateMatcher > Ptr
Definition: verify.h:50
#define VOICE_SDK_API
Definition: config.h:21
Class for continuous voice verification using Opus audio stream.
Definition: verify_stream.h:155
const VerifyResult verifyResult
Voice verification result.
Definition: verify_stream.h:27
Structure representing voice verification result.
Definition: verify.h:17
std::shared_ptr< VoiceTemplate > Ptr
Definition: voice_template.h:27
std::shared_ptr< VoiceVerifyStreamOpus > Ptr
Definition: verify_stream.h:157