Displaying 6 results from an estimated 6 matches for "silk_sqrt_approx".
2017 Nov 27
3
Reg an issue with smoothing factor in VAD implementation
...A_Q15, 1 );
} else if( speech_nrg < 32768 ) {
if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); // Energy is doubled here : comment by me
} else {
speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
}
/* square-root */
speech_nrg = silk_SQRT_APPROX( speech_nrg );
SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
}
/* Smoothing coefficient */
smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB( (opus_int32)SA_Q15, SA_Q15 ) ); // step3: Update the smoothing factor based on speech probability : comment by me
if( psEncC-&...
2018 Feb 16
1
Reg an issue with smoothing factor in VAD implementation
...6-bit value is stored in a 32-bit int without sign-extension
> e.g. 0x00008b3b), but that doesn't seem to be the case here.
> The problem is even worse when opus_int is defined as 16-bit in the
> platform - SA_Q15 overflows to negative right here with a similar effect
> speech_nrg = silk_SQRT_APPROX(speech_nrg);
> SA_Q15 = silk_SMULWB(32768 + speech_nrg, SA_Q15);
>
> I can't speak for the logic where the speech energy gets doubled. It
> obviously seems intentional but I don't know why. Maybe so that
> smoothing is performed at a constant rate regardless of whether
>...
2017 Nov 20
4
Reg an issue with smoothing factor in VAD implementation
...t; 32768 ) {
> if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
> speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); // Energy is doubled
> here : comment by me
> } else {
> speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
> }
>
> /* square-root */
> speech_nrg = silk_SQRT_APPROX( speech_nrg );
> SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
> }
>
> /* Smoothing coefficient */
> smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB(
> (opus_int32)SA_Q15, SA_Q15 ) ); // step3: Update the smoothing factor based
> on speech probability...
2017 Nov 27
0
Reg an issue with smoothing factor in VAD implementation
...in cases where the
16-bit value is stored in a 32-bit int without sign-extension e.g.
0x00008b3b), but that doesn't seem to be the case here.
The problem is even worse when opus_int is defined as 16-bit in the
platform - SA_Q15 overflows to negative right here with a similar effect
speech_nrg = silk_SQRT_APPROX(speech_nrg);
SA_Q15 = silk_SMULWB(32768 + speech_nrg, SA_Q15);
I can't speak for the logic where the speech energy gets doubled. It
obviously seems intentional but I don't know why. Maybe so that smoothing
is performed at a constant rate regardless of whether framesize is 10 or
20ms?
On S...
2017 Nov 20
0
Reg an issue with smoothing factor in VAD implementation
...A_Q15, 1 );
} else if( speech_nrg < 32768 ) {
if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); // Energy is doubled here : comment by me
} else {
speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
}
/* square-root */
speech_nrg = silk_SQRT_APPROX( speech_nrg );
SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
}
/* Smoothing coefficient */
smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB( (opus_int32)SA_Q15, SA_Q15 ) ); // step3: Update the smoothing factor based on speech probability : comment by me
if( psEncC-&...
2017 Nov 22
0
Reg an issue with smoothing factor in VAD implementation
...;frame_length == 10 * psEncC->fs_kHz ) {
>> speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); // Energy is doubled
>> here : comment by me
>> } else {
>> speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
>> }
>>
>> /* square-root */
>> speech_nrg = silk_SQRT_APPROX( speech_nrg );
>> SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 );
>> }
>>
>> /* Smoothing coefficient */
>> smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB(
>> (opus_int32)SA_Q15, SA_Q15 ) ); // step3: Update the smoothing factor based
>...