Применение оценочной передаточной функции к сигналу для моделирования канала - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь смоделировать канал передачи звука из некоторых семплов: у меня есть оригинальные записи, а те, которые записаны с искажением. Я использую tfestimate () для получения оценки передаточной функции. Но теперь я немного озадачен тем, как применять его для создания симулированного искажения. То, что я пытался сделать, это:

res = tfestimate(...)                     % get TF from clean and noisy record.
c = abs(ifft(res));                       % convert to time domain
out = conv(signal, c);                    % filter
wavwrite(out, 16000, 16, '/tmp/out.wav'); % dump

но я не доволен результатом, он звучит совсем иначе.

Есть ли лучший способ применить оценку передаточной функции "res" к входному "сигналу"?

1 Ответ

2 голосов
/ 31 марта 2011

Просто чтобы прояснить, ваши "оригинальные записи и записи с искажениями" были записаны одновременно, верно?И процесс искажения не добавляет шума?

Вместо того, чтобы вычислять передаточную функцию в частотной области с помощью tfestimate и затем пытаться инвертировать ее, было бы более прямым вычислить фильтр FIR Wiener, который поворачиваеторигинальная запись в искаженную версию.

В качестве альтернативы, вы можете попытаться подогнать функцию переноса, возвращаемую tfestimate, а затем превратить ее в фильтр во временной области.Функция invfreqs - хорошее место для начала;он будет соответствовать модели ZPK измеренной частотной характеристике.

...