demos/TTSArmLinux: add WAV duration and RTF display

pull/3018/head
彭逸豪 3 years ago
parent 30e546c7b6
commit 2772022432

@ -9,6 +9,13 @@
using namespace paddle::lite_api;
// WAV采样率
// 如果播放速度和音调异常,请修改采样率
// 常见采样率16000, 24000, 32000, 44100, 48000, 96000
#define WAV_SAMPLE_RATE 24000
// WAV数据类型
// 定义在此处以便在 int16_t 和 float 之间切换
typedef int16_t WavDataType;
class Predictor {
@ -174,6 +181,16 @@ public:
return wav_.size() * sizeof(WavDataType);
}
// 获取WAV持续时间单位毫秒
float GetWavDuration() {
return static_cast<float>(GetWavSize()) / sizeof(WavDataType) / static_cast<float>(WAV_SAMPLE_RATE) * 1000;
}
// 获取RTF合成时间 / 音频时长)
float GetRTF() {
return GetInferenceTime() / GetWavDuration();
}
void ReleaseWav() {
wav_.clear();
}
@ -190,9 +207,10 @@ public:
uint16_t audio_format = 1; // 1为整数编码3为浮点编码
uint16_t num_channels = 1;
// WAV采样率
// 如果播放速度和音调异常,请修改采样率
// 常见采样率16000, 24000, 32000, 44100, 48000, 96000
uint32_t sample_rate = 24000;
uint32_t sample_rate = WAV_SAMPLE_RATE;
uint32_t byte_rate = 64000;
uint16_t block_align = 2;

@ -61,7 +61,9 @@ int main(int argc, char *argv[]) {
}
std::cout << "Inference time: " << predictor.GetInferenceTime() << " ms, "
<< "WAV size (without header): " << predictor.GetWavSize() << " bytes" << std::endl;
<< "WAV size (without header): " << predictor.GetWavSize() << " bytes, "
<< "WAV duration: " << predictor.GetWavDuration() << " ms, "
<< "RTF: " << predictor.GetRTF() << std::endl;
if (!predictor.WriteWavToFile(outputWavPath)) {
std::cerr << "write wav file failed" << std::endl;

Loading…
Cancel
Save