Call Center SDK  1.11.3
waveutils.h
1 /* Copyright 2017 ID R&D Inc. All Rights Reserved. */
2 
3 #pragma once
4 
5 #include <vector>
6 #include <string>
7 #include <fstream>
8 #include <voicesdk/core/config.h>
9 
10 namespace voicesdk {
11 
15  struct AudioInfo {
16 
20  size_t samplesNum;
21 
25  size_t sampleRate;
26 
30  size_t channelsNum;
31 
32  AudioInfo() = default;
33 
34  AudioInfo(size_t samplesNum, size_t sampleRate, size_t channelsNum) :
38  {}
39 
40  friend std::ostream &operator<<(std::ostream &os, const AudioInfo &obj) {
41  os << "AudioInfo["
42  << "samplesNum: " << obj.samplesNum << ", "
43  << "sampleRate: " << obj.sampleRate << ", "
44  << "channelsNum: " << obj.channelsNum << "]";
45  return os;
46  }
47 
48  bool operator==(const AudioInfo& other) const {
49  return samplesNum == other.samplesNum
50  && sampleRate == other.sampleRate
51  && channelsNum == other.channelsNum;
52  }
53  };
54 
58  struct VOICE_SDK_API WavUtils {
59 
67  static std::vector<uint8_t> readAsPCM16Bytes(
68  const std::string& wavFile,
69  size_t& sampleRate);
70 
78  static std::vector<int16_t> readAsPCM16Samples(
79  const std::string& wavFile,
80  size_t& sampleRate);
81 
89  static std::vector<float> readAsFloatSamples(
90  const std::string& wavFile,
91  size_t& sampleRate);
92 
100  static std::vector<float> readAsFloatSamples16Bit(
101  const std::string& wavFile,
102  size_t& sampleRate);
103 
112  static std::vector<uint8_t> readAsPCM16Bytes(
113  const uint8_t* data,
114  size_t dataSize,
115  size_t& sampleRate);
116 
125  static std::vector<int16_t> readAsPCM16Samples(
126  const uint8_t* data,
127  size_t dataSize,
128  size_t& sampleRate);
129 
138  static std::vector<float> readAsFloatSamples(
139  const uint8_t* data,
140  size_t dataSize,
141  size_t& sampleRate);
142 
151  static std::vector<float> readAsFloatSamples16Bit(
152  const uint8_t* data,
153  size_t dataSize,
154  size_t& sampleRate);
155 
162  static AudioInfo getAudioInfo(const std::string& wavFile);
163 
171  static AudioInfo getAudioInfo(const uint8_t* data, size_t dataSize);
172 
173  WavUtils() = delete;
174  };
175 }
Structure containing audio info.
Definition: waveutils.h:15
size_t samplesNum
Number of audio samples.
Definition: waveutils.h:20
size_t sampleRate
Audio sample rate in Hz.
Definition: waveutils.h:25
size_t channelsNum
Number of audio channels.
Definition: waveutils.h:30
Class with some static utility functions for working with WAV-data.
Definition: waveutils.h:58
static std::vector< int16_t > readAsPCM16Samples(const std::string &wavFile, size_t &sampleRate)
Reads WAV file as a PCM16 samples buffer (WAV file can be of any format)
static std::vector< uint8_t > readAsPCM16Bytes(const std::string &wavFile, size_t &sampleRate)
Reads WAV file as a PCM16 bytes buffer (WAV file can be of any format)
static std::vector< float > readAsFloatSamples16Bit(const std::string &wavFile, size_t &sampleRate)
Reads WAV file as a float samples buffer with 16-bit precision (WAV file can be of any format)
static std::vector< uint8_t > readAsPCM16Bytes(const uint8_t *data, size_t dataSize, size_t &sampleRate)
Reads WAV file from a memory buffer as a PCM16 bytes buffer (WAV file can be of any format)
static std::vector< float > readAsFloatSamples16Bit(const uint8_t *data, size_t dataSize, size_t &sampleRate)
Reads WAV file from a memory buffer as a float samples buffer with 16-bit precision (WAV file can be ...
static std::vector< int16_t > readAsPCM16Samples(const uint8_t *data, size_t dataSize, size_t &sampleRate)
Reads WAV file from a memory buffer as a PCM16 samples buffer (WAV file can be of any format)
static AudioInfo getAudioInfo(const uint8_t *data, size_t dataSize)
Returns WAV file audio info.
static std::vector< float > readAsFloatSamples(const uint8_t *data, size_t dataSize, size_t &sampleRate)
Reads WAV file from a memory buffer as a float samples buffer (WAV file can be of any format)
static std::vector< float > readAsFloatSamples(const std::string &wavFile, size_t &sampleRate)
Reads WAV file as a float samples buffer (WAV file can be of any format)
static AudioInfo getAudioInfo(const std::string &wavFile)
Returns WAV file audio info.