Баловни с озвучиванием числительных через DFPlayer

Тема в разделе "Глядите, что я сделал", создана пользователем DIYMan, 1 ноя 2018.

  1. DIYMan

    DIYMan Guest

    Корочеее... :D Тут надысь тема была, в которой человек озадачивался проговариванием числительных через DFPlayer. Помнится, я ему тогда ещё высказал мысль, что будут паузы между частями фраз. И вот решил я с налёту это дело протестировать, значит. Во-первых, учтите: в старенькой библиотеке DFPlayer_Mini_Mp3 от разработчиков - в функции mp3_play(num) (которая проигрывает файлы из папки mp3 на SD-карточке) - есть бага.

    Оригинальный код, с ошибкой:

    Код (C++):
    //play mp3 file in mp3 folder in your tf card
    void mp3_play (uint16_t num) {

        mp3_send_cmd (0x12, num);
    }
    Правильный код:
    Код (C++):
    //play mp3 file in mp3 folder in your tf card
    void mp3_play (uint16_t num) {

      uint16_t paramMSB = (num >> 8) & 0xFF;
      uint16_t paramLSB = num & 0xFF;

      mp3_send_cmd (0x12, paramMSB, paramLSB);

        //mp3_send_cmd (0x12, num);
    }
    Иначе хрен она у вас будет играть файлы с номерами - пожалуй, сами догадаетесь, с какого номера файла начнётся затык ;)

    Корочее....:D Воспользовавшись чудненьким сервисом https://soundoftext.com/ - понагенерировал и поназакачал этих самых mp3-файлов. Задача была - втупую обучить дуню произносить числа в диапазоне [0,10000) (кто не врубился, поясню - от 0 включительно до 10000, не включая 10000).

    Эксперимент показал, что на файлах короткой длительности пину BUSY плеера верить не стоит, прерывания под такое дело отводить - аннунах, жирно будет, посему было решено отказаться от анализа пина BUSY в пользу настраиваемых временнЫх маркеров проигрывания того или иного файла. Что, теоретически, позволило бы уменьшить паузы между словами; на практике - да, чуть уменьшило.

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

    Всё добро лежит тут: https://github.com/Porokhnya/MP3Say

    Как пользоваться:

    1. Всю папку mp3 - на SD-карточку и в плеер;
    2. Плеер подключаем согласно даташиту, пины для SoftwareSerial - настраиваются в самом верху *.ino-файла;
    3. Компилируем (юзал версию 1.8.5 и Uno), заливаем, открываем монитор порта, ждём приглашения и вводим числа (в мониторе порта должно быть настроено "NL & CR"), жмакаем ENTER на клаве, слушаем голос, рыдаем и плачем :) (потому как всё равно слышно, что сгенерирован, упёрся в техническую паузу при проигрывании MP3).

    Код там - тупой, писан глубокой ночью, но - комментарии есть, склонение числительных - какое-никакое, но присутствует. Короче - всё без претензий, делайте с этим, чо хотите - я просто разместил объяву ;)
     
    Un_ka, Tomasina, ИгорьК и ещё 1-му нравится это.
  2. DIYMan

    DIYMan Guest

    Корочее...:D Лучшим вариантом мне таки представляется нагенерить числительных в полных файлах, под конкретный проект: например, если надо градусы озвучивать - так и нагенерить, чтобы в каждом файле была полная фраза, типа "сорок один градус". Во-первых, так будет всяко лучше звучать. Во-вторых - см. первый пункт. В-третьих - код будет сильно проще, не надо разбора числа на части. В-четвёртых - считаю, что это как раз тот случай, когда универсальность таки выходит боком, и лучше делать под конкретные требования по озвучке: помнится, было видео на ютюбе, где товарищ так красиво озвучивал температуру, аж заслушаешься, так вот: посмотрел я тот код - там действительно озвучка в полных файлах, нагенерённых на весь диапазон; видимо, т-щ тоже наткнулся на затыки в виде пауз ;)

    Ссылочку на генератор фраз - я вам дал, есличо ;)
     
    Un_ka, parovoZZ, ИгорьК и ещё 1-му нравится это.
  3. DetSimen

    DetSimen Guest

    да чош тебе не спица то?
     
  4. DIYMan

    DIYMan Guest

    Дык режим работы такой, привык за двадцать лет как-то уже, теперь ночью нормально хрен поспишь :(

    А ты чего бодрствуешь? ;)
     
  5. DetSimen

    DetSimen Guest

    дак я то внаработе. У мня +4 MSK
     
  6. ИгорьК

    ИгорьК Гуру

    Опять постригся... И перекрасился.
     
  7. DetSimen

    DetSimen Guest

    да привычней как то лысым быть. да и злой я к тому же.
     
  8. parovoZZ

    parovoZZ Гуру

    на этого кошака смотришь и... возникает какое-то чуйство...доверия что-ли. А тот инфантильный был. С ним каши не сваришь.