Vocoder на STM32

Сеско
Пн 11 июля 2016 г., 4:06 утра
Я попытался скомпилировать вокаду (MELP) для STM32, Blue Poard, 32F103. Я использовал источник Melp Vovcoder, старые вещи, должен быть вне авторского права уже. И это хорошо. Он может кодировать голос в битовый поток 2400bps.

Но я провалился. MELP, кажется, нуждается в 30 КБ ОЗУ, в то время как F103 проводит только 8 КБ. Есть ли доска Cheapo Ans с 32 -километровой оперативной памятью, как синяя доска?

Пито
Пн 11 июля 2016 г., 6:08
Blue Board и Mmini предлагают 20 КБ ОЗУ..

Сеско
Пн 11 июля 2016 г., 7:49
О, ты прав. ОЗУ переполнен 8 КБ. Если я включите как кодер, так и декодер, это 11 кб.

Действительно мне помогает, мне все еще нужно больше оперативной памяти или кто -то, чтобы хрустить коды.
Он хранит коэффициенты в 32 -битном int или float, даже в образцах голоса, но изменение этого будет тяжело.

------------
Arduino: 1.6.3 (Windows 7), плата: «Generic STM32F103C Series, STM32F103C8 (20K ОЗУ. 64K Flash), STM32Duino Bootloader "

C:/users/i7-4790/appdata/roaming/arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld.Exe: C: \ users \ i7-4790 \ appdata \ local \ temp \ build1072652885461977077.TMP/MELP.CPP.Эльфийский раздел `.Данные 'не вписываются в регион "ОЗУ'

C:/users/i7-4790/appdata/roaming/arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld.Exe: область «ОЗУ», переполненная 8216 байтами

COLLECT2.EXE: Ошибка: LD вернул 1 статус выхода

Ошибка компиляции.
------------

Ахулл
Пн 11 июля 2016 г., 9:59
У вас есть какой -нибудь исходный код, на который мы можем посмотреть?

Учитывая относительно низкую пропускную способность, вы можете использовать внешний флеш -чип для буферизации

Использование 8 -битных, а не 32 -битных образцов также может работать, как и может уменьшить размер буфера, но без какого -либо кода, на который можно посмотреть, я не могу сказать.

Вы также можете попробовать запустить код на ESP8266, так как у них должно быть больше ОЗУ.

Сеско
Пн 11 июля 2016 г. 12:16
Это (с небольшими изменениями для компиляции с Arduino):
https: // github.com/arash-ostadzadeh/qua ... KS/MELP1.2

Я использовал кодек раньше. С 1993-1995, TI, разработка, выплачиваемая США. Отличный код. Намного лучше, чем то, что я могу сделать и понять. Не недооценивайте MELP только потому, что старый.

Я уменьшил размер до 17 КБ ОЗУ, изменив 2 таблицы с Float на INT16. Одна таблица не является проблемой, но другой должен быть масштабирован. Я постараюсь проверить его на своем Arduino Due (больше оперативной памяти), но сначала мне нужен код DA и AD 8 кГц, и мне нужно аппаратное обеспечение микрофона и динамика, а также какой -то способ хранения закодированной речи.

Mrburnette
Пн 11 июля 2016 г., 13:13
Список досок STM32 и SRAM http: // wiki.STM32duino.com/index.PHP?тип ... 103_boards

Звучит так, как будто можно использовать ESP8266 (без Wi -Fi) на 160 МГц. Много шрама
Короткая статья здесь

Луча

Рик Кимбалл
Пн 11 июля 2016 г. 13:18
Забавно, этот код должен быть старым. Я смотрел на Makefile и вижу цель очищения. Это то, что я использовал ежедневно в середине 90 -х годов. Если они использовали очистку и отвечали на свои предупреждения, то код будет довольно чистым и без утечки.

http: // web.Стэнфорд.edu/class/cs343/res ... очищать.PDF
https: // en.Википедия.org/wiki/rational_purify

-рик

Mrburnette
Пн 11 июля 2016 г., 13:21
Рик Кимбалл написал: -рик

Рик Кимбалл
Пн 11 июля 2016 г. 13:50
Так как это работает? Я пытался

$ ./melp -i вход/образец.PCM -O -образец.Bitfile

образец.BitFile не был очень маленьким. Я ожидал, что это уменьшится.

Какова скорость дискретизации ввода/образца.PCM ? Я пропустил это где -нибудь в документах? Похоже, 8 тысяч работает хорошо.

-рик

Рик Кимбалл
Пн 11 июля 2016 г. 14:00
Кажется, что этот код широко использует динамическую память. Даже если бы вы могли снизить количество статического оперативного операции, мне интересно, сколько памяти на самом деле выделяется.

[Редактировать: я прикрепил выход valgrind -tool = massif]
Похоже, что он использовал +5 тысяч с образцом.PCM -файл
массив.текст
(22.98 киб) скачано 47 раз

Рик Кимбалл
Пн 11 июля 2016 г. 14:38
Кстати: это может быть идеально связано с Raspberry Pi Zero. Код будет просто скомпилироваться как есть.

Сеско
Пн 11 июля 2016 г. 14:46
Вход энкодера представляет собой поплавированный буфер из 180 образцов при 8 кГц.
*ERASE ALL * * 1.01 C INTRST FROM FOCAL PROGRAMMING MANUAL PDP-15 SYSTEMS * 1.02 C COPYRIGHT 1970 BY DIGITAL EQUPMENT CORP. * 1.03 C REPRINTED BY PERMISSION OF DIGITAL EQUIPMENT CORP. * 1.04 C LAST CHANGE: 8/9/71 * 1.05 * 1.06 C THIS PROGRAM WILL COMPUTE MONTHLY PAYMENTS AND THE * 1.07 C CONTRIBUTION OF EACH PAYMENT TO INTEREST AND PRINCIPAL. * 1.08 C YOU WILL BE ASKED THE AMOUNT OF THE PRINCIPAL, THE RATE * 1.09 C OF THE INTEREST, AND THE TERM OF THE LOAN, WHICH IS IN * 1.10 C MONTHS. THE PROGRAM WILL THEN OUTPUT A TABLE SHOWING * 1.11 C THE PROGRESSION OF THE LOAN. * 1.12 * 1.33 E * 1.34 A "PRINCIPAL: ",PR,!"INTEREST RATE: ",IN * 1.35 A !"TERM (IN MONTHS): ",TE,!! * 1.40 S D=1+((IN/12)*.01) * 1.41 F A=1,TE;D 15.99 * 1.42 S C=PR/B * 1.50 S BA=PR * 5.02 T "PRINCIPAL:",%7.02,PR,:30"PAYMENTS",C,!!! * 5.05 T :5,"PAYMENT",:17,"INTEREST",:32,"PRINCIPAL",:50,"BALANCE",! * 6.01 F M=1,TERM;D 7 * 6.02 T !!!,:20,"TOTAL INTEREST",%6.02,TO,!!!;G 1.33 * 7.01 S CI=BA*(IN/12)*.01 * 7.02 S TO=TO+CI * 7.03 S CP=C-CI;S BA=BA-CP;T %7,M,%14.02,CI,CP,BA,! *15.99 S B=B+(1/D^A) * * * GO PRINCIPAL: :100000 INTEREST RATE: :6.3 TERM (IN MONTHS): :120 100000.0= 0.00= 1125.33 = 0.00PAYMENT= 0.00INTEREST= 0.00PRINCIPAL= 0.00BALANCE = 1= 525.00= 600.33= 99399.70 = 2= 521.85= 603.48= 98796.20 = 3= 518.68= 606.65= 98189.50 = 4= 515.50= 609.84= 97579.70 = 5= 512.29= 613.04= 96966.60 = 6= 509.08= 616.26= 96350.40 = 7= 505.84= 619.49= 95730.90 = 8= 502.59= 622.74= 95108.10 = 9= 499.32= 626.01= 94482.10 = 10= 496.03= 629.30= 93852.80 = 11= 492.73= 632.60= 93220.20 = 12= 489.41= 635.93= 92584.30 = 13= 486.07= 639.26= 91945.00 = 14= 482.71= 642.62= 91302.30 = 15= 479.34= 645.99= 90656.30 = 16= 475.95= 649.39= 90007.00 = 17= 472.54= 652.80= 89354.20 = 18= 469.11= 656.22= 88697.90 = 19= 465.67= 659.67= 88038.20 = 20= 462.20= 663.13= 87375.10 = 21= 458.72= 666.61= 86708.50 = 22= 455.22= 670.11= 86038.40 = 23= 451.70= 673.63= 85364.70 = 24= 448.17= 677.17= 84687.50 = 25= 444.61= 680.72= 84006.80 = 26= 441.04= 684.30= 83322.50 = 27= 437.44= 687.89= 82634.60 = 28= 433.83= 691.50= 81943.10 = 29= 430.20= 695.13= 81248.00 = 30= 426.55= 698.78= 80549.20 = 31= 422.88= 702.45= 79846.80 = 32= 419.20= 706.14= 79140.60 = 33= 415.49= 709.84= 78430.80 = 34= 411.76= 713.57= 77717.20 = 35= 408.02= 717.32= 76999.90 = 36= 404.25= 721.08= 76278.80 = 37= 400.46= 724.87= 75553.90 = 38= 396.66= 728.67= 74825.20 = 39= 392.83= 732.50= 74092.70 = 40= 388.99= 736.34= 73356.40 = 41= 385.12= 740.21= 72616.10 = 42= 381.24= 744.10= 71872.00 = 43= 377.33= 748.00= 71124.00 = 44= 373.40= 751.93= 70372.10 = 45= 369.45= 755.88= 69616.20 = 46= 365.49= 759.85= 68856.30 = 47= 361.50= 763.84= 68092.50 = 48= 357.49= 767.85= 67324.60 = 49= 353.46= 771.88= 66552.70 = 50= 349.40= 775.93= 65776.80 = 51= 345.33= 780.00= 64996.80 = 52= 341.23= 784.10= 64212.70 = 53= 337.12= 788.22= 63424.50 = 54= 332.98= 792.35= 62632.10 = 55= 328.82= 796.51= 61835.60 = 56= 324.64= 800.69= 61034.90 = 57= 320.43= 804.90= 60230.00 = 58= 316.21= 809.12= 59420.90 = 59= 311.96= 813.37= 58607.50 = 60= 307.69= 817.64= 57789.80 = 61= 303.40= 821.93= 56967.90 = 62= 299.08= 826.25= 56141.70 = 63= 294.74= 830.59= 55311.10 = 64= 290.38= 834.95= 54476.10 = 65= 286.00= 839.33= 53636.80 = 66= 281.59= 843.74= 52793.00 = 67= 277.16= 848.17= 51944.90 = 68= 272.71= 852.62= 51092.20 = 69= 268.24= 857.10= 50235.10 = 70= 263.74= 861.60= 49373.50 = 71= 259.21= 866.12= 48507.40 = 72= 254.66= 870.67= 47636.70 = 73= 250.09= 875.24= 46761.50 = 74= 245.50= 879.83= 45881.70 = 75= 240.88= 884.45= 44997.20 = 76= 236.24= 889.10= 44108.10 = 77= 231.57= 893.76= 43214.30 = 78= 226.88= 898.46= 42315.90 = 79= 222.16= 903.17= 41412.70 = 80= 217.42= 907.91= 40504.80 = 81= 212.65= 912.68= 39592.10 = 82= 207.86= 917.47= 38674.60 = 83= 203.04= 922.29= 37752.30 = 84= 198.20= 927.13= 36825.20 = 85= 193.33= 932.00= 35893.20 = 86= 188.44= 936.89= 34956.30 = 87= 183.52= 941.81= 34014.50 = 88= 178.58= 946.76= 33067.70 = 89= 173.61= 951.73= 32116.00 = 90= 168.61= 956.72= 31159.30 = 91= 163.59= 961.75= 30197.50 = 92= 158.54= 966.79= 29230.70 = 93= 153.46= 971.87= 28258.90 = 94= 148.36= 976.97= 27281.90 = 95= 143.23= 982.10= 26299.80 = 96= 138.07= 987.26= 25312.50 = 97= 132.89= 992.44= 24320.10 = 98= 127.68= 997.65= 23322.40 = 99= 122.44= 1002.89= 22319.60 = 100= 117.18= 1008.15= 21311.40 = 101= 111.89= 1013.45= 20297.90 = 102= 106.57= 1018.77= 19279.20 = 103= 101.22= 1024.12= 18255.10 = 104= 95.84= 1029.49= 17225.60 = 105= 90.44= 1034.90= 16190.70 = 106= 85.00= 1040.33= 15150.30 = 107= 79.54= 1045.79= 14104.50 = 108= 74.05= 1051.28= 13053.30 = 109= 68.53= 1056.80= 11996.50 = 110= 62.98= 1062.35= 10934.10 = 111= 57.41= 1067.93= 9866.18 = 112= 51.80= 1073.53= 8792.64 = 113= 46.16= 1079.17= 7713.47 = 114= 40.50= 1084.84= 6628.64 = 115= 34.80= 1090.53= 5538.11 = 116= 29.08= 1096.26= 4441.85 = 117= 23.32= 1102.01= 3339.84 = 118= 17.54= 1107.80= 2232.04 = 119= 11.72= 1113.61= 1118.43 = 120= 5.87= 1119.46=- 1.03 = 0.00TOTAL INTEREST= 35039.0 PRINCIPAL: :

Сеско
Чт 14 июля 2016 г. 8:19 утра
Рик Кимбалл написал:Код будет просто скомпилироваться как есть.

Доски DOA