[hts-users:03175] very small bug fix in HGen.c for MSD streams when using non-standard windows
- Subject: [hts-users:03175] very small bug fix in HGen.c for MSD streams when using non-standard windows
- From: Matt Shannon <sms46@xxxxxxxxx>
- Date: Wed, 22 Feb 2012 18:51:55 +0000
- Delivered-to: hts-users@xxxxxxxxxxxxxxx
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
- Follow-Ups
-
- [hts-users:03178] Re: very small bug fix in HGen.c for MSD streams when using non-standard windows, Keiichiro Oura