Skip to content

Commit 642f375

Browse files
committed
show RNNoise option.
1 parent bfeb27c commit 642f375

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

examples/common-portaudio.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ audio_async::audio_async()
2020
m_pInParamsRecord(NULL),
2121
m_pParamsRecord(NULL),
2222
m_pStreamRecord(NULL),
23-
m_running(false){
24-
m_pAudioBuffer = new AudioBuffer<float>((size_t)(OUTPOUT_SAMPLE_RATE * 300));
23+
m_running(false),
24+
m_pAudioBuffer(NULL)
25+
{
2526
m_psys = &portaudio::System::instance();
2627
}
2728

@@ -48,7 +49,7 @@ audio_async::~audio_async() {
4849
}
4950
}
5051

51-
bool audio_async::init(int iInputDevice, uint8_t save_audio){
52+
bool audio_async::init(int iInputDevice, uint8_t save_audio, bool enable_rnnoise){
5253

5354
try
5455
{
@@ -82,6 +83,10 @@ bool audio_async::init(int iInputDevice, uint8_t save_audio){
8283
std::cout << strDetails.c_str() << std::endl;
8384
}
8485
#endif
86+
m_pAudioBuffer = new AudioBuffer<float>((size_t)(OUTPOUT_SAMPLE_RATE * 300), enable_rnnoise);
87+
88+
if (NULL == m_pAudioBuffer)
89+
return false;
8590

8691
m_pAudioBuffer->setSaveAudioFlag(save_audio);
8792

examples/common-portaudio.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ template<typename T>
712712
class AudioBuffer : public CircularQueue<T>
713713
{
714714
public:
715-
AudioBuffer(size_t capacity) : CircularQueue<T>(capacity),
715+
AudioBuffer(size_t capacity, bool enable_rnnoise = true) : CircularQueue<T>(capacity),
716716
srcState(NULL),
717717
resample_outputBuffer(NULL),
718718
m_un8SaveAudioFlag(0)
@@ -736,10 +736,14 @@ class AudioBuffer : public CircularQueue<T>
736736
src_data.end_of_input = 0;
737737
src_data.src_ratio = (double)OUTPOUT_SAMPLE_RATE / INPUT_SAMPLE_RATE;
738738

739-
740-
if (!rnnoise.available())
741-
{
742-
cout << "AudioBuffer::RNNoise was NULL!" << endl;
739+
740+
m_bEnableRnnoise = enable_rnnoise;
741+
if (m_bEnableRnnoise)
742+
{
743+
if (!rnnoise.available())
744+
{
745+
cout << "AudioBuffer::RNNoise was NULL!" << endl;
746+
}
743747
}
744748
};
745749
~AudioBuffer() {
@@ -755,7 +759,7 @@ class AudioBuffer : public CircularQueue<T>
755759
{
756760
wavWriterRaw.close();
757761
}
758-
if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
762+
if (this->m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
759763
{
760764
wavWriterRnnoised.close();
761765
}
@@ -790,13 +794,13 @@ class AudioBuffer : public CircularQueue<T>
790794
wavWriterRaw.write(pData[0], iFramesPerBuffer);
791795
}
792796

793-
if (rnnoise.available())
797+
if (m_bEnableRnnoise && rnnoise.available())
794798
{
795799
rnnoise.process(pData[0], iFramesPerBuffer);
796800
}
797801

798802

799-
if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
803+
if (m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
800804
{
801805
this->wavWriterRnnoised.write(pData[0], iFramesPerBuffer);// Copy all the frames over to our internal vector of samples
802806
}
@@ -860,7 +864,7 @@ class AudioBuffer : public CircularQueue<T>
860864
std::string filename = std::string(buffer) + "_raw.wav";
861865
wavWriterRaw.open(filename, (uint32_t)INPUT_SAMPLE_RATE, 32, 1);
862866
}
863-
if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
867+
if (this->m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
864868
{
865869
std::string filename = std::string(buffer) + "_rnnoise.wav";
866870
wavWriterRnnoised.open(filename, (uint32_t)INPUT_SAMPLE_RATE, 32, 1);
@@ -883,6 +887,7 @@ class AudioBuffer : public CircularQueue<T>
883887
float *resample_outputBuffer;
884888
SRC_DATA src_data;
885889
// RNN-based noise suppression
890+
bool m_bEnableRnnoise;
886891
RNNoiseIterator rnnoise;
887892

888893
public:
@@ -904,7 +909,7 @@ class audio_async {
904909
audio_async();
905910
~audio_async();
906911

907-
bool init(int iInputDevice, uint8_t save_audio = 0);
912+
bool init(int iInputDevice, uint8_t save_audio = 0, bool enable_rnnoise = true);
908913

909914
// start capturing audio via the provided SDL callback
910915
// keep last len_ms seconds of audio in a circular buffer

examples/stream-portaudio/stream-portaudio.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct whisper_params {
7070
std::string language = "zh";
7171
std::string model = "models/ggml-base-q5_1.bin";
7272
std::string fname_out;
73+
bool enable_rnnoise = true;
7374
};
7475

7576
void whisper_print_usage(int argc, const char ** argv, const whisper_params & params);
@@ -102,6 +103,7 @@ bool whisper_params_parse(int argc, const char ** argv, whisper_params & params)
102103
else if (arg == "-sa" || arg == "--save-audio") { params.save_audio = std::stoi(argv[++i]); }
103104
else if (arg == "-ng" || arg == "--no-gpu") { params.use_gpu = false; }
104105
else if (arg == "-fa" || arg == "--flash-attn") { params.flash_attn = true; }
106+
else if (arg == "-nr" || arg == "--no-rnnoise") { params.enable_rnnoise = false; }
105107

106108
else {
107109
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
@@ -139,6 +141,7 @@ void whisper_print_usage(int /*argc*/, const char ** argv, const whisper_params
139141
fprintf(stderr, " -sa, --save-audio [%-7x] save the recorded audio to a file\n", params.save_audio);
140142
fprintf(stderr, " -ng, --no-gpu [%-7s] disable GPU inference\n", params.use_gpu ? "false" : "true");
141143
fprintf(stderr, " -fa, --flash-attn [%-7s] flash attention during inference\n", params.flash_attn ? "true" : "false");
144+
fprintf(stderr, " -nr, --no-rnnoise [%-7s] disable RNNoise\n", params.enable_rnnoise ? "true" : "false");
142145
fprintf(stderr, "\n");
143146
}
144147

@@ -173,7 +176,7 @@ int run(int argc, const char ** argv) {
173176
// init audio
174177

175178
audio_async audio;
176-
if (!audio.init(params.capture_id, params.save_audio)) {
179+
if (!audio.init(params.capture_id, params.save_audio, params.enable_rnnoise)) {
177180
printf("%s: audio.init() failed!\n", __func__);
178181
return 1;
179182
}

0 commit comments

Comments
 (0)