@@ -64,6 +64,85 @@ struct wav_header {
6464 uint32_t data_size;
6565};
6666
67+ // #include <vector>
68+ // #include <cstdio>
69+ // #include <cmath>
70+
71+ // static void audio_post_clean(std::vector<float>& data) { // detect clicks
72+ // const float silenceThreshold = 1e-5f;
73+ // const float noiseThreshold = 1e-3f;
74+ // const size_t minSilence = 100; // samples
75+ // const size_t noiseSpan = 150; // samples
76+ // const size_t minSilence2 = 100; // samples
77+
78+ // size_t len = data.size();
79+
80+ // int silencecounterA = 0;
81+ // int noisecounterA = 0;
82+ // int silencecounterB = 0;
83+ // int state = 0; // 0 = finding first silence, 1 = measuring noise, 2 = finding second silence
84+
85+ // size_t noiseStart = 0;
86+
87+ // for (size_t i = 0; i < len; ++i) {
88+ // float sample = std::fabs(data[i]);
89+
90+ // if (state == 0) { // finding first silence
91+ // if (sample < silenceThreshold) {
92+ // silencecounterA++;
93+ // } else {
94+ // if (silencecounterA >= minSilence) {
95+ // state = 1;
96+ // noisecounterA = 1;
97+ // noiseStart = i;
98+ // } else {
99+ // silencecounterA = 0;
100+ // noisecounterA = 0;
101+ // silencecounterB = 0;
102+ // }
103+ // }
104+ // }
105+ // if (state == 1) { // measuring noise span
106+ // noisecounterA++;
107+ // if(sample>noiseThreshold)
108+ // {
109+ // state = 0;
110+ // silencecounterA = 0;
111+ // noisecounterA = 0;
112+ // silencecounterB = 0;
113+ // }
114+ // else if(noisecounterA>noiseSpan)
115+ // {
116+ // state = 2;
117+ // }
118+ // }
119+ // if (state == 2) { // finding second silence
120+ // if (sample < silenceThreshold) {
121+ // silencecounterB++;
122+ // if (silencecounterB >= minSilence2) {
123+ // // full click detected
124+ // size_t noiseend = noiseStart + noisecounterA - 1;
125+ // //printf("Click detected from %zu to %zu\n", noiseStart, noiseend);
126+ // for(size_t j=noiseStart;j<noiseend;++j)
127+ // {
128+ // data[j] *= 0.01f; //greatly suppress noise
129+ // }
130+ // // reset to search again
131+ // state = 0;
132+ // silencecounterA = 0;
133+ // noisecounterA = 0;
134+ // silencecounterB = 0;
135+ // }
136+ // } else {
137+ // state = 0;
138+ // silencecounterA = 0;
139+ // noisecounterA = 0;
140+ // silencecounterB = 0;
141+ // }
142+ // }
143+ // }
144+ // }
145+
67146static std::string save_wav16_base64 (const std::vector<float > &data, int sample_rate) {
68147 std::ostringstream oss;
69148 wav_header header;
@@ -740,6 +819,7 @@ static tts_generation_outputs ttstype_generate_ttscpp(const tts_generation_input
740819 ttstime = timer_check ();
741820 printf (" \n TTS Generated audio in %.2fs.\n " ,ttstime);
742821 std::vector<float > wavdat = std::vector (response_data.data , response_data.data + response_data.n_outputs );
822+ // audio_post_clean(wavdat);
743823 last_generated_audio = save_wav16_base64 (wavdat, ttscpp_runner->sampling_rate );
744824 output.data = last_generated_audio.c_str ();
745825 output.status = 1 ;
0 commit comments