func loadReal16kData() []float64 { w, err := io.ReadWav("../test_files/test16k.wav") if err != nil { log.Fatal(err) } return w.GetMonoData() }
func TestMGLSASynthesis(t *testing.T) { var ( testData []float64 frameShift = 80 frameLen = 512 alpha = 0.41 stage = 12 gamma = -1.0 / float64(stage) order = 24 f0Seq []float64 ex []float64 mgc [][]float64 ) w, err := io.ReadWav("../test_files/test16k.wav") if err != nil { log.Fatal(err) } testData = w.GetMonoData() // F0 f0Seq = f0.SWIPE(testData, 16000, frameShift, 60.0, 700.0) // MGCep frames := gossp.DivideFrames(testData, frameLen, frameShift) mgc = make([][]float64, len(frames)) for i, frame := range frames { mgc[i] = mgcep.MGCep(window.BlackmanNormalized(frame), order, alpha, gamma) } // adjast number of frames m := min(len(f0Seq), len(mgc)) f0Seq, mgc = f0Seq[:m], mgc[:m] // Excitation g := &excite.PulseExcite{ SampleRate: 16000, FrameShift: frameShift, } ex = g.Generate(f0Seq) // Waveform generation synth := NewMGLSASpeechSynthesizer(order, alpha, stage, frameShift) _ = synth.Synthesis(ex, mgc) // TODO(ryuichi) valid check }