ГОСТ Р 53556.7—2013
fade_out ft) = 0,5+0,5*cos (t/T‘pi):
a(t) = fade_out ft) ‘previousAmp! [к].
if (previousLineEnvFlag [k] == 1)
aft) * =previousEnv (t+T/2);
p (t) =previousPhi [k] *2 ‘pi’previousFrcq [k] *t;
* ft) + = ft) *sin (p ft)).
Чтобы избежать искажений из-за наложения спектров, синтезируемые линии заглушаются (то
есть aft) = 0). пока их мгновенная частота выше или равна половине частоты дискретизации, то есть
d phi ft) / dt> =pi’N/T.
Параметры, необходимые 8 следующем фрейме, сохраняются в межфреймовой памяти:
previousEnvFlag = envFlag:
previousT_max = t_max:
proviousR_atk =r_atk:
previousR_dec = r_dec:
previousTotalNumLme = totalNumLine:
for (7*0: /’ <tota!NumUne. i ♦+) {
previousFreq p] = freq p]:
previousAmp! p] = amp! p];
previousPhi p) = fmod (p pj. 2 ‘pi):
previousLineEnvFlag p] = UneEnvFlag p):
)
fmod (x. 2‘pi) является функцией, возвращающей модуль 2*р/для х.
5.1.4.3.5 Синтезатор улучшения
Синтезатор улучшения основан на базовом синтезаторе, но оценивает также фазы линии при вос
становлении одного фрейма аудиосигнала. Так как параметры линии, закодированные во фрейме по
тока битов и соответствующем фрейме улучшения, имеют силу в середине соответствующего фрейма
аудиосигнала, синтезатор гармонической и отдельной линии генерирует секцию аудиосигнала длиной в
один фрейм, который стартует в середине предыдущего фрейма и заканчивается в середине текущего
фрейма.
Некоторые параметры предыдущего фрейма (имена, начинающиеся со слова «previous»). извле
каются из межфреймовой памяти, которая должна быть сброшена прежде, чем будет декодироваться
первый фрейм потока битов.
Сначала вычисляются функции огибающей previousEnv ft) и envft) предыдущего и текущего фрей
мов согласно следующим правилам.
Если envFlag == 1, тогда функция огибающей envft) получается из параметров огибающей
t_maxEnh. r_atkEnh и r_decEnh. При Т. являющемся длиной фрейма, envft) вычисляется для-7/2 <=
/<3/2*7:
if (-1/2 <= l/T && t/T <t_maxEnh)
env ft) = max (0.1-ft_maxEnh-t/T) ‘r_atkEnh).
if (t_maxEnh <= t/T && VT <312)
env ft) = max (0.1-ft/T-t_maxEnh) ‘r_decEnh):
Если envFlag == 0. тогда используется постоянная функция огибающей envft).
env ft)* !.
СоответственноpreviousEnv ft) вычисляется, исходя из параметровpreviousT_maxEnh, previousR_
atkEnh. previousR_decEnh и previousEnvFlag.
Параметры огибающей, переданные в случае envFlag == 1. справедливы для гармонических ли
ний. а также для отдельных линий. Таким образом, функции огибающей должны быть сгенерированы
всегда, даже если все UneEnvFlag р] == 0.
Прежде, чем выполняется синтез, аккумулятор х ft) для синтезируемого аудиосигнала очищается
для 0 <= / <7:
х ft) = 0.
42