roboforum.ru

Технический форум по робототехнике.

Кодирование звука для CC2500 (рация) на AVR

Кодирование звука для CC2500 (рация) на AVR

EdGull » 28 янв 2009, 23:57

Хочу через СС2500 передовать звук с микрофона на динамик, т.е. технически сделать рацию.
Каким алгоритмом лучше жать?

Re: Кодирование звука для CC2500 (рация)

zubr » 29 янв 2009, 00:08

это смотря чем жать
для AVR ADPCM-потолок
а если есть чтото пошустрее или даже DSP какой - так смотри в сторону CELP и его вариантов.

Re: Кодирование звука для CC2500 (рация)

EdGull » 29 янв 2009, 00:13

пока для меги
мало того, для 8МГц, т.к. 3В
на ARM жутко не хочется переходить

Добавлено спустя 38 секунд:
а про DSP я вообще молчу.

Re: Кодирование звука для CC2500 (рация)

zubr » 29 янв 2009, 00:20

тогда просто забудь про сжатие
а ДСП - тот же контроллер и зря ты его боишься. Щас вон тексы мелкие трехбаксовые выпустили (в серии конечно).

Re: Кодирование звука для CC2500 (рация)

EdGull » 29 янв 2009, 00:25

ну ADPCM этоже кодирование?
тем более что 32килобита/с CC2500 спокойно продавливает

Re: Кодирование звука для CC2500 (рация)

zubr » 29 янв 2009, 00:30

попробуй конечно же.
но ты же этой авркой еще чтото делать будешь?
это будет сложно, с учетом того, что подозреваю она же и декодить будет еще.

Re: Кодирование звука для CC2500 (рация)

EdGull » 29 янв 2009, 00:34

а чё мне ей еще в рации делать?
тока за кнопками смотреть да жки рулить

Re: Кодирование звука для CC2500 (рация)

EdGull » 29 янв 2009, 00:51

тут обсуждаем только для AVR

Re: Кодирование звука для CC2500 (рация)

zubr » 29 янв 2009, 00:55

прискорбно, значит ты уменьшишь количество людей которым эта тема будет интересна.
обрати внимание что в аппликухе атмеля на ADPCM под AVR просят 16М такт только на декодинг...

Re: Кодирование звука для CC2500 (рация)

$ilent » 29 янв 2009, 01:02

Есть у меня конкретное решение:
питание до - 3,6В;
кузов - махонький;
обвязка - 4 детали;
инициализация - 3 комманды;
разрядность - 2 семпла по 8 бит;
режим - слейв, мастер (что очень удобно - запустил и пусть себе кодирует, хочешь снимай, хочешь не снимай);
Ну и самое вкусное - он и DAC и ADC.
А зовут его XE3006

Re: Кодирование звука для CC2500 (рация)

EdGull » 29 янв 2009, 01:10

сложу сюда на всякий случай

Схема усилитель-ограничитель речевого сигнала


zmus2.jpg


Схема предназначена: Как следует из названия, схема предназначается для уменьшения динамического диапазона и пик-фактора речевого сигнала. Это может быть полезно при передаче речи по каналам связи , цифровой обработке и в других случаях.

Принцип работы: Схема представляет собой так называемый ограничитель последовательного действия. Поступающий на ее вход сигнал сначала подвергается предыскажениям в ФВЧ для поднятия высоких частот , затем ограничивается диодами VD1, VD2 ( и DD1b ). Обработанный таким образом сигнал далее поступает на фазовращатель с выполненный на DD1c . Фазовращатель сдвигает фронты ограниченного сигнала так что они оказываются на вершинах импульсов. После этого вступает в действие второй ограничитель ( DD1d ) который эти выбросы срезает. Дальше сигнал поступает на ФНЧ ( DD1e ) для ограничения спектра частотой 2.5 кгц, после чего на выход. Нелинейные искажения таким образом снижаются до уровня 5-7% что для речевого сигнала вполне приемлемо. При изменении сигнала на входе на 30 Дб на выходе изменение 6 Дб. В отличие от схем с АРУ данный усилитель безинерционный.

Re: Кодирование звука для CC2500 (рация)

zubr » 29 янв 2009, 01:31

$ilent писал(а):Есть у меня конкретное решение:
А зовут его XE3006


скорее это http://www.vlsi.fi/datasheets/vs1103.pdf
эта хоть сжимает

Добавлено спустя 6 минут 50 секунд:
EdGull писал(а):сложу сюда на всякий случай

Схема усилитель-ограничитель речевого сигнала


схема гениальная, жаль что не твоя :(
http://qrx.narod.ru/hams/us_og.htm
Последний раз редактировалось EdGull 29 янв 2009, 02:09, всего редактировалось 2 раз(а).
Причина: излишнее цитирование

Re: Кодирование звука для CC2500 (рация) на AVR

blindman » 29 янв 2009, 05:24

EdGull писал(а):Хочу через СС2500 передовать звук с микрофона на динамик, т.е. технически сделать рацию.
Каким алгоритмом лучше жать?

[[en:CVSDM]]?

Re: Кодирование звука для CC2500 (рация) на AVR

EdGull » 29 янв 2009, 09:38

шо то какой-то хитрый это алгоритм, в рунете ни одной странички на русском языке

Re: Кодирование звука для CC2500 (рация) на AVR

blindman » 29 янв 2009, 10:53

алгоритм на самом деле очень простой.

Энкодер поддерживает эталон (reference sample), и размер шага. Каждая выборка сравнивается с эталоном. Если выборка больше эталона, энкодер выдает 1 и увеличивает эталон на размер шага, иначе выдает 0 и уменьшает эталон на размер шага. Энкодер также сохраняет предыдущие N бит (очень распространены N = 3 и N = 4) для определения корректировки шага. Если предыдущий N битов все 1 или все 0, шаг удваивается. Иначе, шаг уменьшается в 2 раза. Шаг корректируется для каждой выборки.

Псевдокод:
Код: Выделить всёРазвернуть
N = 4;
last_bits[N] = {0, 0, 0 , 0};
step = 1;
reference = 0;

int sample_bit()
{
    sample = ADC;
    if (sample > reference) {
        bit = 1;
        reference += step;
    } else {
        bit = 0;
        reference -= step;
    }
    last_bits[0..N-2] = last_bits[1..N-1];
    last_bits[N-1] = bit;
    if (array_sum(last_bits) == N || array_sum(last_bits) == 0) {
        step = step * 2;
    } else {
        step = step / 2;
    }
    return bit;
}


Rambler\'s Top100 Mail.ru counter