Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.231.180.210] |
|
Сообщ.
#1
,
|
|
|
У кого-нибудь есть хорошие примеры (доступные для понимания) кода инициализации фильтра при неизвестном сигнале?
Речь идёт о синтезе на основе LPC коэфициентов. Необходимо синтезировать имея коэфициенты не зная начальных значений сигнала. p.s. пробовал делать начальный сигнал случайным - предсказание часто стремится +/- бесконечности |
Сообщ.
#2
,
|
|
|
Как инициализировать фильтр вроде разобрался.
Но видимо я всё таки что-то до конца не понимаю. При использовании LPC фильтра получаю затухающий сигнал который выглядит весьма некрасиво. Как это правильно нормализуется? Перед тем как вычислись коэфициэнты LPC использовалась windows функция. Надо-ли в каком-то месте теперь восстаналивать эту функцию? Если да - то как это сделать правильно? DATA[0]=2098.198 DATA[1]=-246.816 DATA[2]=-1365.196 DATA[3]=2393.690 DATA[4]=-1314.841 DATA[5]=3178.600 DATA[6]=51.735 DATA[7]=-2019.761 DATA[8]=10712.448 DATA[9]=9310.553 DATA[10]=-1494.432 DATA[11]=2514.578 DATA[12]=3396.584 DATA[13]=-3924.448 DATA[14]=-2282.751 DATA[15]=-247.906 DATA[16]=-4364.032 DATA[17]=-4340.550 DATA[18]=-2560.813 DATA[19]=-3117.655 DATA[20]=-1500.081 DATA[21]=423.558 DATA[22]=634.793 DATA[23]=1923.048 DATA[24]=2841.495 DATA[25]=2414.472 DATA[26]=2749.026 DATA[27]=2672.082 DATA[28]=1406.397 DATA[29]=691.649 DATA[30]=23.745 DATA[31]=-1187.389 DATA[32]=-1769.565 DATA[33]=-1959.657 DATA[34]=-2276.679 DATA[35]=-2082.677 DATA[36]=-1536.711 DATA[37]=-1049.716 DATA[38]=-327.028 DATA[39]=458.768 DATA[40]=995.266 DATA[41]=1452.009 DATA[42]=1733.793 DATA[43]=1680.309 DATA[44]=1469.500 DATA[45]=1112.579 DATA[46]=566.293 DATA[47]=10.528 DATA[48]=-492.081 DATA[49]=-947.123 DATA[50]=-1235.589 DATA[51]=-1331.166 DATA[52]=-1278.552 DATA[53]=-1054.506 DATA[54]=-695.901 DATA[55]=-286.277 DATA[56]=142.943 DATA[57]=537.688 DATA[58]=829.508 DATA[59]=1001.806 DATA[60]=1041.213 DATA[61]=937.170 DATA[62]=720.830 DATA[63]=428.184 DATA[64]=92.358 DATA[65]=-235.086 DATA[66]=-511.015 DATA[67]=-708.781 DATA[68]=-803.722 DATA[69]=-788.196 DATA[70]=-674.334 DATA[71]=-480.098 DATA[72]=-234.015 DATA[73]=26.852 DATA[74]=269.546 DATA[75]=464.674 DATA[76]=588.244 DATA[77]=629.297 DATA[78]=587.786 DATA[79]=472.659 DATA[80]=303.394 DATA[81]=105.187 DATA[82]=-95.571 DATA[83]=-272.655 DATA[84]=-404.402 DATA[85]=-476.934 DATA[86]=-484.129 DATA[87]=-428.584 DATA[88]=-321.298 DATA[89]=-178.885 DATA[90]=-21.492 DATA[91]=129.628 DATA[92]=255.489 DATA[93]=341.463 DATA[94]=378.655 DATA[95]=365.100 DATA[96]=305.489 DATA[97]=210.016 DATA[98]=92.998 DATA[99]=-29.271 DATA[100]=-140.845 DATA[101]=-227.998 DATA[102]=-280.897 DATA[103]=-294.734 DATA[104]=-269.948 DATA[105]=-211.899 DATA[106]=-129.952 DATA[107]=-35.987 DATA[108]=57.263 DATA[109]=137.851 DATA[110]=196.153 DATA[111]=225.959 DATA[112]=225.056 DATA[113]=195.306 DATA[114]=142.177 DATA[115]=73.813 DATA[116]=-0.140 DATA[117]=-69.866 DATA[118]=-126.656 DATA[119]=-163.954 DATA[120]=-178.079 DATA[121]=-168.537 DATA[122]=-137.899 DATA[123]=-91.298 DATA[124]=-35.626 DATA[125]=21.453 DATA[126]=72.530 DATA[127]=111.390 DATA[128]=133.737 DATA[129]=137.643 DATA[130]=123.653 DATA[131]=94.583 DATA[132]=55.023 DATA[133]=10.649 DATA[134]=-32.568 DATA[135]=-69.145 DATA[136]=-94.764 DATA[137]=-106.758 DATA[138]=-104.363 DATA[139]=-88.705 DATA[140]=-62.548 DATA[141]=-29.849 DATA[142]=4.823 DATA[143]=36.903 DATA[144]=62.420 DATA[145]=78.471 DATA[146]=83.534 DATA[147]=77.584 DATA[148]=62.011 DATA[149]=39.362 DATA[150]=12.948 DATA[151]=-13.626 DATA[152]=-36.939 DATA[153]=-54.183 DATA[154]=-63.490 DATA[155]=-64.115 DATA[156]=-56.473 DATA[157]=-42.014 DATA[158]=-22.984 DATA[159]=-2.086 DATA[160]=17.892 DATA[161]=34.436 DATA[162]=45.617 DATA[163]=50.306 DATA[164]=48.268 DATA[165]=40.150 DATA[166]=27.338 DATA[167]=11.745 DATA[168]=-4.469 DATA[169]=-19.187 DATA[170]=-30.604 DATA[171]=-37.442 DATA[172]=-39.084 DATA[173]=-35.615 DATA[174]=-27.770 DATA[175]=-16.806 DATA[176]=-4.308 DATA[177]=8.032 DATA[178]=18.639 DATA[179]=26.250 DATA[180]=30.057 DATA[181]=29.788 DATA[182]=25.710 DATA[183]=18.564 DATA[184]=9.440 DATA[185]=-0.377 DATA[186]=-9.587 DATA[187]=-17.042 DATA[188]=-21.885 DATA[189]=-23.643 DATA[190]=-22.265 DATA[191]=-18.106 DATA[192]=-11.860 DATA[193]=-4.446 DATA[194]=3.117 DATA[195]=9.849 DATA[196]=14.934 DATA[197]=17.812 DATA[198]=18.240 DATA[199]=16.301 DATA[200]=12.380 DATA[201]=7.092 DATA[202]=1.195 DATA[203]=-4.521 DATA[204]=-9.331 DATA[205]=-12.669 DATA[206]=-14.191 DATA[207]=-13.804 DATA[208]=-11.667 DATA[209]=-8.153 DATA[210]=-3.793 DATA[211]=0.807 DATA[212]=5.041 DATA[213]=8.387 DATA[214]=10.466 DATA[215]=11.083 DATA[216]=10.242 DATA[217]=8.133 DATA[218]=5.101 DATA[219]=1.586 DATA[220]=-1.933 DATA[221]=-5.003 DATA[222]=-7.256 DATA[223]=-8.450 DATA[224]=-8.491 DATA[225]=-7.439 DATA[226]=-5.492 DATA[227]=-2.950 DATA[228]=-0.175 DATA[229]=2.465 DATA[230]=4.639 DATA[231]=6.093 DATA[232]=6.682 DATA[233]=6.380 DATA[234]=5.276 DATA[235]=3.557 DATA[236]=1.479 DATA[237]=-0.670 DATA[238]=-2.611 DATA[239]=-4.107 DATA[240]=-4.990 DATA[241]=-5.182 DATA[242]=-4.698 DATA[243]=-3.638 DATA[244]=-2.172 DATA[245]=-0.510 DATA[246]=1.123 DATA[247]=2.519 DATA[248]=3.512 DATA[249]=3.997 DATA[250]=3.942 DATA[251]=3.384 DATA[252]=2.423 DATA[253]=1.205 DATA[254]=-0.098 DATA[255]=-1.314 DATA[256]=-2.292 DATA[257]=-2.921 DATA[258]=-3.138 DATA[259]=-2.941 DATA[260]=-2.377 DATA[261]=-1.540 DATA[262]=-0.553 DATA[263]=0.449 |
Сообщ.
#3
,
|
|
|
моя ошибка была в том что после инициализации сигналом возбуждения - я использовал экстраполяцию на основе предыдущего сигнала возбуждения
что бы сигнал не затухал его надо постоянно подпитывать сигналом возбуждения в противном случаи фильтр его подавит |
Сообщ.
#4
,
|
|
|
А вот при возбуждением сигналом одинаковой амплитуды похоже иногда может наступать резонанс... либо я неправильно с фильтрами работаю..
|
Сообщ.
#5
,
|
|
|
7 коэфициентов LPC
8 коэфициентов LPC 9 коэфициентов LPC 10 коэфициентов LPC у меня получилось что нет необходимости использования более 8 коэфициентов LPC, что бы передать речь в формате 8000 sample rate из недостатков - высокий резонанс шума (пока не придумал как это побороть - по идеи надо фильтр наложить который погасит высокие частоты и поднимет низкие) пробовал сделать de-emphasis - низкие частоты становятся ооочень сильными... наверно нужен какой-то сбаллансированный фильтр |
Сообщ.
#6
,
|
|
|
Не совсем понятно, для чего вам это надо. Вы G729 хотите переизобрести или что?
|
Сообщ.
#7
,
|
|
|
Для синтеза.
Не переспективно? |
Сообщ.
#8
,
|
|
|
У меня кстати кривой фильтр получился (сам удивлён как это вообще работало...)
при реализации стандарного БИХ фильтра проблема с резонансом некоторых щелевых и носовых звуков, да и вообще с амплитудой решилась. АРУ на выходе совсем оказалась не нужной. |
Сообщ.
#9
,
|
|
|
Цитата zamir @ Для синтеза. Не переспективно? Да вроде сейчас компилятивный синтез в тренде. Хотя я уже давно не слежу за новостями в данной области. А чисто для поиграться LPC вполне интересно и легко реализуемо. |
Сообщ.
#10
,
|
|
|
интересно, легко, поиграться - всё так и есть - в воду глядите =)
|