@@ -712,7 +712,7 @@ template<typename T>
712
712
class AudioBuffer : public CircularQueue <T>
713
713
{
714
714
public:
715
- AudioBuffer (size_t capacity) : CircularQueue<T>(capacity),
715
+ AudioBuffer (size_t capacity, bool enable_rnnoise = true ) : CircularQueue<T>(capacity),
716
716
srcState (NULL ),
717
717
resample_outputBuffer (NULL ),
718
718
m_un8SaveAudioFlag (0 )
@@ -736,10 +736,14 @@ class AudioBuffer : public CircularQueue<T>
736
736
src_data.end_of_input = 0 ;
737
737
src_data.src_ratio = (double )OUTPOUT_SAMPLE_RATE / INPUT_SAMPLE_RATE;
738
738
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
+ }
743
747
}
744
748
};
745
749
~AudioBuffer () {
@@ -755,7 +759,7 @@ class AudioBuffer : public CircularQueue<T>
755
759
{
756
760
wavWriterRaw.close ();
757
761
}
758
- if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
762
+ if (this -> m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
759
763
{
760
764
wavWriterRnnoised.close ();
761
765
}
@@ -790,13 +794,13 @@ class AudioBuffer : public CircularQueue<T>
790
794
wavWriterRaw.write (pData[0 ], iFramesPerBuffer);
791
795
}
792
796
793
- if (rnnoise.available ())
797
+ if (m_bEnableRnnoise && rnnoise.available ())
794
798
{
795
799
rnnoise.process (pData[0 ], iFramesPerBuffer);
796
800
}
797
801
798
802
799
- if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
803
+ if (m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
800
804
{
801
805
this ->wavWriterRnnoised .write (pData[0 ], iFramesPerBuffer);// Copy all the frames over to our internal vector of samples
802
806
}
@@ -860,7 +864,7 @@ class AudioBuffer : public CircularQueue<T>
860
864
std::string filename = std::string (buffer) + " _raw.wav" ;
861
865
wavWriterRaw.open (filename, (uint32_t )INPUT_SAMPLE_RATE, 32 , 1 );
862
866
}
863
- if (m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
867
+ if (this -> m_bEnableRnnoise && m_un8SaveAudioFlag & SAVE_AUDIO_RNNOISED)
864
868
{
865
869
std::string filename = std::string (buffer) + " _rnnoise.wav" ;
866
870
wavWriterRnnoised.open (filename, (uint32_t )INPUT_SAMPLE_RATE, 32 , 1 );
@@ -883,6 +887,7 @@ class AudioBuffer : public CircularQueue<T>
883
887
float *resample_outputBuffer;
884
888
SRC_DATA src_data;
885
889
// RNN-based noise suppression
890
+ bool m_bEnableRnnoise;
886
891
RNNoiseIterator rnnoise;
887
892
888
893
public:
@@ -904,7 +909,7 @@ class audio_async {
904
909
audio_async ();
905
910
~audio_async ();
906
911
907
- bool init (int iInputDevice, uint8_t save_audio = 0 );
912
+ bool init (int iInputDevice, uint8_t save_audio = 0 , bool enable_rnnoise = true );
908
913
909
914
// start capturing audio via the provided SDL callback
910
915
// keep last len_ms seconds of audio in a circular buffer
0 commit comments