[Clam-devel] SMSSynthesys and phase management.

Giulio Paci giuliopaci at interfree.it
Mon Mar 12 09:31:50 PDT 2007

Hi Pau and all,

first of all thank you for your assistance, we succeeded in upgrading our
speech synthesizer up to CLAM 0.98. Although we got still some small issue
probably due to some version changes that we do not manage well.

But now we are facing a phase management problem: we have introduced in
the speech synthesis engine an algorithm (described in [*], see below) for
preserving the original waveform shape after time stretching and pitch
shifting operations. In order to do so we must modify all phase values.

We are using SMSSynthesis class, but the method
bool SMSSynthesis::Do(
        SpectralPeakArray& inputSinusoidalPeaks,
        Spectrum& inputResidualSpectrum,
        Spectrum& outputSinusoidalSpectrum,    //
        Spectrum& outputSpectrum,        //
        Audio& outputAudio,
        Audio& outputSinusoidalAudio,
        Audio& outputResidualAudio)
in SMSSynthesis.cxx overwrites our phase values.
We saw that we can set an attribute "Type" (in the PhaseManagementConfig
attribute of our SMSSynthesisConfig instance, mSynthConfig) that can be
set to "Align", "Continuation" or "Random".
But we need something that would do nothing. Currently we have commented
out mPhaseMan.Do(inputSinusoidalPeaks); but we think this is a very
bad solution. Is it possible to add something like "None" as a Type option?

Thank you in advance,

Giacomo Sommavilla and Giulio Paci.

[*] Di Federico, R., "Waveform preserving time stretching and pitch
shifting for sinusoidal models of sound", In Proceedings of the COST-G6
Digital Audio Effects Workshop, 1998.

More information about the clam-devel mailing list