Skip to content

Instantly share code, notes, and snippets.

@slegroux
Last active April 9, 2020 01:57
Show Gist options
  • Save slegroux/e4ae2c8b3f1e164adce79eda9af7e365 to your computer and use it in GitHub Desktop.
Save slegroux/e4ae2c8b3f1e164adce79eda9af7e365 to your computer and use it in GitHub Desktop.
read/write wave
KALDI_LOG << "R/W using kaldi Input/Output";
std::string input_wav_path = "data/ENG_M.wav";
WaveData input_wave;
WaveHolder waveholder;
Input ki(input_wav_path);
waveholder.Read(ki.Stream());
input_wave = waveholder.Value();
cout<<"dur: "<<input_wave.Duration()<<" fs: "<<input_wave.SampFreq()<<endl;
Matrix<BaseFloat> input_wave_mat = input_wave.Data();
int n_rows = input_wave_mat.NumRows();
int n_cols = input_wave_mat.NumCols();
//Vector<BaseFloat> input_wave_vec;
//input_wave_vec.Resize(n_cols);
//input_wave_vec.CopyFromVec(input_wave_mat.Row(0));
Vector<BaseFloat> input_wave_vec(n_cols);
input_wave_vec.CopyRowFromMat(input_wave_mat,0);
for (int i=0; i<10; i++){
cout<<input_wave_vec(i)<<' ';
}
cout<<endl;
Matrix<BaseFloat> out_matrix(n_rows, n_cols);
out_matrix.CopyRowFromVec(input_wave_vec, 0);
WaveData out_wave(input_wave.SampFreq(), out_matrix);
Output ko("/tmp/test.wav",true, false);
out_wave.Write(ko.Stream());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment