воспроизвести голосовые сообщения по PWM

May 24, 2005 16 Replies

Здорово, all


Каким образом можно воспроизвести человеческую речь с MCU PIC при помощи модуля PWM? Хотелось бы записывать голосовые сообщения с компьютера в EEPROM И потом воспроизводить. Hо непонятна методика и формат сохранения/преобразования записанного с микрофона на ПК WAV-файла.



Hello, slavik! You wrote to all on Tue, 24 May 2005 13:48:18 +0400:

sl> Каким образом можно воспроизвести человеческую речь с MCU PIC при sl> помощи модуля PWM? Хотелось бы записывать голосовые сообщения с sl> компьютера в EEPROM И потом воспроизводить. Hо непонятна методика и sl> формат сохранения/преобразования записанного с микрофона на ПК sl> WAV-файла. Если не хочешь разбирать формат WAV на PIC, возьми формат попроще. Запускаешь какой-нибудь аудиоредактор, пишешь звук, редактируешь его (вырезаешь паузы, поднимаешь громкость почти под самое ограничение, можно ещё эквалайзер покрутить). Затем сохраняешь в формате RAW, моно, 8 бит без знака, с частотой какой нравится. Получается файл в котором готовые аудиоданные для вывода в PWM (при условии, что там ровно 8 бит), можешь их сразу зашить программатором в EEPROM. Всё.

With best regards, Serg.

Hi!

slavik levchenko сообщил в новостях следующее:

Если на ширпотребном MCU - наиболее просто и эффективно с помощью ADPCM.

Я в свое время делал так. 1) Записал все тексты при помощи девочки с хорошим голосом и виндового рекордера. 2) Для обработки использовал SoundForge (кажется 4.5) Там производилась фильтрация, убирались шумы, нормализовалось, вырезались хвосты, паузы и ненужные куски, ограничивался пик-фактор и т.д. Результаты сохранялись в формате *.raw. Он наиболее удобен - только отсчеты без всяких заголовков и сжатий. 3) Написал утилитку, которая брала эти *.raw файлы кодировала их ADPCM и сохраняла как исходники С, в виде массивов типа const unsigned char far Voice1[] = { 0x77,0x37, ... 0x19 }; Одновременно она формировала каталог этих файлов, опять же, в виде исходника на С. 4) Полученные файлы включались в проект, компилировались, заливались во флеш вместе с программой. Которая включала в себя ADPCM декодер и их воспроизводила 8-битным PWM, синтезируя необходимые фразы из записанных слов и словосочетаний. Работало замечательно. Всего где-то на 160к у меня голоса было, при дискретизации 7кГц это составляло около 50с

Если интересно, устройство о котором идет речь

formatting link
На этапе 3 я некоторое время пытался создать сразу *.obj файлы, но потом бросил это занятие в виду бессмысленности. Реализация ADPCM есть в примерах то ли у Atmel, то ли у Microchip, уже не помню. Я откуда-то оттуда брал, с небольшими правками.

Примите уверения в совершеннейшем к Вам почтении

Приветствую Вас, многоуважаемый/ая/ое Sergey!

Втp Май 24 2005 18:58, Sergey Mudry писал к slavik levchenko:

SM> Если не хочешь разбирать формат WAV на PIC, возьми формат попроще.

Ой... а куда уж проще? Если WAV не жатый - это 44 (кажись) байта заголовка + PCM-данные.

С наилучшими пожеланиями, Dmitri.

Hello Sergey.

Tue May 24 2005 19:53, Sergey Zabelin wrote to slavik levchenko:

SZ> Если на ширпотребном MCU - наиболее просто и эффективно с помощью SZ> ADPCM.

Кстати, а где можно почитать про стандарты ADPCM? Винда, вроде, поддерживает два: IMA ADPCM и MS ADPCM. Где-то описано, чем они отличаются? Или, может, библиотечки/исходники на ЯВУ имеются?

SZ> Реализация ADPCM есть в примерах то ли у Atmel, то ли у Microchip, уже SZ> не помню. Я откуда-то оттуда брал, с небольшими правками.

Ясно... вот как плохо сначала отвечать, а потом дочитывать до конца письмо. :) Hо, может, кто-то ещё даст более прямые ссылки?

Dimmy.

Hello Dimmy.

25 May 05 14:40, you wrote to Sergey Zabelin:

SZ>> Если на ширпотребном MCU - наиболее просто и эффективно с помощью SZ>> ADPCM.

DT> Кстати, а где можно почитать про стандарты ADPCM? Винда, вроде, DT> поддерживает два: IMA ADPCM и MS ADPCM.

В Винде и посмотреть, точнее на Microsoft'е. Эти описания входят в общее описание RIFF формата.

(У меня валяется древний файл riff.doc от 1993 года, так есть описание ADPCM'ов, кроме того, там упоминается Multimedia Developer Registration Kit - поищи что нибудь похожее но посовременнее на msdn.microsoft.com)

DT> Где-то описано, чем они отличаются?

Всем, 2 совершенно разных алгоритма (а вообще там 6 разных ADPCM'ов)

Roman

Hello, Dmitri! You wrote to Sergey Mudry on Tue, 24 May 2005 21:13:15 +0400:

SM>> Если не хочешь разбирать формат WAV на PIC, возьми формат попроще. DL> Ой... а куда уж проще? Если WAV не жатый - это 44 (кажись) байта DL> заголовка + PCM-данные. А в RAW - только данные :) А заголовок WAV может быть разной длины, в нём могут быть дополнительные поля типа комментариев. Про разные параметры типа частоты дискретизации, число каналов, и типы сжатия я молчу. Если микроконтроллерный девайс поддерживает только один набор параметров, зачем нужен заголовок?

With best regards, Serg.

Sergey, ты ещё здесь сидишь?

Четверг Май 26 2005 14:58, Sergey Mudry wrote to Dmitri Litovchenko:

SM>>> Если не хочешь разбирать формат WAV на PIC, возьми формат SM>>> попроще. DL>> Ой... а куда уж проще? Если WAV не жатый - это 44 (кажись) DL>> байта заголовка + PCM-данные. SM> А в RAW - только данные :) SM> А заголовок WAV может быть разной длины,

Это точно!

SM> в нём могут быть дополнительные поля типа комментариев. Про разные SM> параметры типа частоты дискретизации, число каналов, и типы сжатия я SM> молчу. Если микроконтроллерный девайс поддерживает только один набор SM> параметров, зачем нужен заголовок?

Hизачем. Если аудиософт не может создать файл в формате RAW - написать нехитрую софтинку, которая будет "отрезать" заголовок от WAV файла. Если надо - то и запаковать сможет, произвольным алгоритмом...

Георгий

Hello Sergey.

Thu May 26 2005 15:58, Sergey Mudry wrote to Dmitri Litovchenko:

DL>> Ой... а куда уж проще? Если WAV не жатый - это 44 (кажись) байта DL>> заголовка + PCM-данные.

SM> А в RAW - только данные :)

Кстати, интересно, а насколько сложен алгоритм декодирования MP3? Как я понимаю, там плавающая точка?

Dimmy.

Hello, Dimmy! You wrote to Sergey Mudry on Fri, 27 May 2005 07:55:52 +0400:

DT> Кстати, интересно, а насколько сложен алгоритм декодирования MP3? Как DT> я понимаю, там плавающая точка? Достаточно сложен. Декодер Хаффмана+прескалинг+антиалиасинг+косинусный синтез. Подробности в исходниках. :) При желании, можно и в 32 бита с фиксированой точкой запихнуть, пробовал когда-то. Только для PIC'а это далеко за пределами быстродействия. По моим прикидкам, для 44 кГц стерео надо где-то 10-20 миллионов

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

With best regards, Serg.

Fri May 27 2005 08:55, Dimmy Timchenko wrote to Sergey Mudry:

DT> Кстати, интересно, а насколько сложен алгоритм декодирования MP3?

Порядка 20...30 MIPS DSP.

DT> Как я DT> понимаю, там плавающая точка?

Hе обязательно.

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

HÅ ÏÂÑÚÁÔÅÌØÎÏ. á ×ÏÏÂÝÅ ÍÏÖÎÏ ÓÍÏÔÒÅÔØ × ÓÔÏÒÏÎÕ mpg123.

Kirill, ты ещё здесь сидишь?

Вторник Май 31 2005 01:38, Kirill Frolov wrote to George Shepelev:

Hе попадалось. Можно полный URL?

Георгий

Wed Jun 01 2005 23:44, George Shepelev wrote to Kirill Frolov:

GS> Kirill, ты ещё здесь сидишь?

GS> Вторник Май 31 2005 01:38, Kirill Frolov wrote to George Shepelev:

GS> Hе попадалось. Можно полный URL?

formatting link
-- несложно было бы и догадаться.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required