ГОСТ Р 53556.7—2013
щего фрейма аудиосигнала, синтезатор генерирует секцию аудиосигнала х (t)длиной в один фрейм, ко
торая стартует в центре предыдущего фрейма (/ =0). и заканчивается в центре текущего фрейма (t = 7).
По умолчанию синтезатор HILN работает при частоте дискретизации synthSampleRato. как указа
но samplingFrequency, передающимся в AudioSpecificInfo ():
synthSampleRate = samplingFrequency.
Фрейм синтеза содержит N выборок:
N = (int) (HILNframeLength *synthSampleRato / sampleRate / speedFactor + 0,5,1.
Таким образом продолжительность T фрейма синтеза равна:
Т = N/ synthSampleRato.
В дальнейшем описывается вычисление синтезируемого выходного сигнала х (t)
для 0 <= t < Т. Вариант интервала времени (то есть фактический фрейм выходных выборок) опре
деляется как
x[n) = x (t)c t = (п+0,5) * (Ш )
для 0 <= п <N.
Синтезатор шума использует тот же синтез создания фреймов, как синтезатор гармонической и
отдельной линии.
5.1.4.3.4 Базовый синтезатор
Некоторые параметры предыдущего фрейма (имена, начинающиеся со слова «предыдущий»), из
влекаются из межфреймовой памяти, которая должна быть сброшена перед декодированием первого
фрейма потока битов.
Сначала вычисляются функции огибающей previousEnv (t) и env(t) предыдущего и текущего фрей
мов согласно следующим правилам:
Если envFlag == 1. тогда функция огибающей env(t) получается из параметров оги
бающей t_max. r_atk и r_dec. При Т. являющемся длиной фройма. env(t) вычисляется для -7/2
<= t <3/2* Г:
if (-1/2 <= tn && t/T <t_max)
env (t) = max (QA-(t_max-t/T) *r_atk):
if (t_max <= t/T && t/T <312)
env (t) = max (QA-(t/T-t_max) *r_doc).
Если envFlag == 0, то используется постоянная функции огибающей env(t).
env (t)- 1.
Соответственно. previousEnv(t) вычисляется исходя из параметров previousT_max. previousR_atk.
previousR_dec и proviousEnvFlag.
Параметры огибающей, переданные в случае envFlag == 1. справедливы для гармонических ли
ний, а такжедля отдельных линий. Таким образом, функции огибающей должны генерироваться всегда,
даже если все UneEnvFlag [i] == 0.
Прежде, чем выполняется синтез, очищается аккумулятор х (t) для синтезируемого аудиосигнала
для 0 <= t<T:
х (t) = О.-
Линии I. продолжающиеся из предыдущего фрейма в текущем фрейме
all i = 0.. totalNumLineA. that have UneContFlag fi] == 1
синтезируются для 0 <= / <7 следующим образом:
к = linePred [tj:
ар (t) = previousAmpI [к):
if (previousLinoEnvFlag [k] == 1)
ap (t) * = previousEnv (t+T/2):
ac (t) = ampI [k):
if (UneEnvFlag [ij == 1)
ac (t) * = env (t-T/2):
short_x_fade = (previousLineEnvFlag [k]&&! (previousR_dec
<5
&&
(previousT_max
<0.5
|| previousR_atk <5))) ||
(UneEnvFlag [ij &&! (r_atk <5 && (t_max>
0 ,5
|| r_dec <5)));
if (short_x_fade == 1) {
40