[Subject Prev][Subject Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hts-users:03178] Re: very small bug fix in HGen.c for MSD streams when using non-standard windows


Hi,

Thank you for your report.
I'll check it.

Regards,
Keiichiro Oura


2012/2/23 Matt Shannon <sms46@xxxxxxxxx>:
> I've noticed a very small bug in HGen.c.  When deciding whether to consider
> a frame as a boundary frame in ChkBoundary, there is a clause
> "pst->win.coef[i][j] != 0.0".  I believe this clause should not be there.
>
> As an example of what can go wrong, consider replacing the standard lf0
> delta window with:
>
> "5 -1.0 0.0 0.0 0.0 1.0"
>
> If there are two voiced regions with a gap of only one unvoiced frame in
> between them, then the voiced frames on either side of the unvoiced frame
> are incorrectly marked as _not_ being part of the boundary for this delta
> window.  This causes spurious off-diagonal terms in the lf0 precision matrix
> ($\transpose{W} U^{-1} W$), resulting in correlations between the lf0 value
> in the two voiced regions, which are usually modelled as being uncorrelated.
>  I have confirmed these spurious correlations exist in the above situation
> with both HTS 2.1 and HTS 2.2.
>
> During training the HTS demo (specifically window.pl) correctly marks such
> frames as part of the boundary.  I have not looked at hts_engine.
>
> The fix is to remove the above clause from the if statement.
>
> Matt Shannon
>

References
[hts-users:03175] very small bug fix in HGen.c for MSD streams when using non-standard windows, Matt Shannon