27 int main(
int argc,
char *argv[]) {
29 using namespace kaldi;
31 "Apply Kaldi pitch extractor and pitch post-processor, starting from wav input.\n" 32 "Equivalent to compute-kaldi-pitch-feats | process-kaldi-pitch-feats, except\n" 33 "that it is able to simulate online pitch extraction; see options like\n" 34 "--frames-per-chunk, --simulate-first-pass-online, --recompute-frame.\n" 36 "Usage: compute-and-process-kaldi-pitch-feats [options...] <wav-rspecifier> <feats-wspecifier>\n" 38 "compute-and-process-kaldi-pitch-feats --simulate-first-pass-online=true \\\n" 39 " --frames-per-chunk=10 --sample-frequency=8000 scp:wav.scp ark:- \n" 40 "See also: compute-kaldi-pitch-feats, process-kaldi-pitch-feats\n";
61 std::string wav_rspecifier = po.
GetArg(1),
62 feat_wspecifier = po.
GetArg(2);
67 int32 num_done = 0, num_err = 0;
68 for (; !wav_reader.
Done(); wav_reader.
Next()) {
69 std::string utt = wav_reader.
Key();
79 KALDI_WARN <<
"Channel not specified but you have data with " 80 << num_chan <<
" channels; defaulting to zero";
82 if (this_chan >= num_chan) {
83 KALDI_WARN <<
"File with id " << utt <<
" has " 84 << num_chan <<
" channels but you specified channel " 85 << channel <<
", producing no output.";
92 KALDI_ERR <<
"Sample frequency mismatch: you specified " 93 << pitch_opts.
samp_freq <<
" but data has " 94 << wave_data.
SampFreq() <<
" (use --sample-frequency option)";
101 waveform, &features);
103 KALDI_WARN <<
"Failed to compute pitch for utterance " 109 feat_writer.
Write(utt, features);
110 if (num_done % 50 == 0 && num_done != 0)
111 KALDI_VLOG(2) <<
"Processed " << num_done <<
" utterances";
114 KALDI_LOG <<
"Done " << num_done <<
" utterances, " << num_err
116 return (num_done != 0 ? 0 : 1);
117 }
catch(
const std::exception &e) {
118 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
void PrintUsage(bool print_command_line=false)
Prints the usage documentation [provided in the constructor].
int main(int argc, char *argv[])
A templated class for writing objects to an archive or script file; see The Table concept...
BaseFloat SampFreq() const
const Matrix< BaseFloat > & Data() const
void Write(const std::string &key, const T &value) const
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
int Read(int argc, const char *const *argv)
Parses the command line options and fills the ParseOptions-registered variables.
void ComputeAndProcessKaldiPitch(const PitchExtractionOptions &pitch_opts, const ProcessPitchOptions &process_opts, const VectorBase< BaseFloat > &wave, Matrix< BaseFloat > *output)
This function combines ComputeKaldiPitch and ProcessPitch.
std::string GetArg(int param) const
Returns one of the positional parameters; 1-based indexing for argc/argv compatibility.
This class's purpose is to read in Wave files.
int NumArgs() const
Number of positional parameters (c.f. argc-1).
#define KALDI_ASSERT(cond)
MatrixIndexT NumRows() const
Returns number of rows (or zero for empty matrix).
Represents a non-allocating general vector which can be defined as a sub-vector of higher-level vecto...
void Register(ParseOptions *opts)