VoiceSDK  5.0.2
waveutils.h
Go to the documentation of this file.
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) :
35  samplesNum(samplesNum),
36  sampleRate(sampleRate),
37  channelsNum(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 
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 }
AudioInfo(size_t samplesNum, size_t sampleRate, size_t channelsNum)
Definition: waveutils.h:34
Structure containing audio info.
Definition: waveutils.h:15
size_t samplesNum
Number of audio samples.
Definition: waveutils.h:20
Definition: intervals.h:8
size_t sampleRate
Audio sample rate in Hz.
Definition: waveutils.h:25
Class with some static utility functions for working with WAV-data.
Definition: waveutils.h:58
#define VOICE_SDK_API
Definition: config.h:21
friend std::ostream & operator<<(std::ostream &os, const AudioInfo &obj)
Definition: waveutils.h:40
size_t channelsNum
Number of audio channels.
Definition: waveutils.h:30
bool operator==(const AudioInfo &other) const
Definition: waveutils.h:48