sindar / pRodriguezAssistant

Personal voice ASSistant v.2 :)
GNU General Public License v3.0
102 stars 14 forks source link

Wiring of LEDs #6

Closed t0mx closed 3 years ago

t0mx commented 3 years ago

Hello Sindar, many thanks to you and to your brother for this amazing project!

My kids are very excited to see Bender acting.

But currently I have only the printed parts and hopefully all electronic components and many questions. If you like, I can provide the pictures of my progress in order to get better documentation of the project. But before I start, I would like to clarify the open questions:

sindar commented 3 years ago

Hello t0mx!

* How to wire the LED strips?

Here is a "schematic": schematic You need to solder teeth strips consequentially(starting from the top left corner connected to a Rpi Zero): изображение Eye LED's soldered in parallel(so they accessed as one strip simultaneously).

* There are 5 strips containing 3x6 + 2x1 LEDs? (3 x teeth rows+ 2 eyes)

Constructively, yes. But in the software it's just one strip for teeth and one for eyes.

* Because of the limitation of the used LED lib, how to wire more pragmatically? All 5 strips in row? Is there any chance that you'll provide an option for this configuration or support me in changing the pythot code by myself (I'm a newbie in python)

Yes, it is better to solder them all together in one row. But I don't have time right now to work on this(and I will need to change my Bender wiring to check it also if I change the software). So, maybe I would recommend just to make as us, 3 teeth strips soldered as one, and 2 eyes soldered in parallel as one(sometimes there could be problems with NeoPixel lib, but I haven't seen them for a while, and correct with restart of the software resolves this problem, ah and reboot also:))

  • Do you fix the eye LEDs somehow to the eye parts? Yes, fixed with glue. Thanks!
t0mx commented 3 years ago

Hi Sergey,

it took some time to get a little bit familiar with the tool chain, but finally I was able to install / compile the packages. But I'm still not able to run the bender python script:

sudo python3 robot.py
Error reading subscription key file!
Subscription key is empty!
mpd error: No such playlist
volume = 20
self.volume = 20
pocketsphinx_co: no process found
serving at :8008
['pocketsphinx_continuous  -dictcase yes -inmic yes  -ds 3 -samprate 8000  -logfn /dev/null  -hmm /home/pi/pRodriguezAssistant/common/resources/en/cmusphinx-en-us-ptm-8khz-5.2 -dict /home/pi/pRodriguezAssistant/profiles/bender/resources/en/bender.dic -jsgf /home/pi/pRodriguezAssistant/profiles/bender/resources/en/bender.jsgf']
Error while starting pocketsphinx_continuous!

pocketsphinx_continuous and all other files named in the command exist, I use nearly the same hardware setup as described on thingiverse. Do you have any idea? Do you use fixed-point arithmetic for sphinxbase?

Another question: when do I need TTS? Do I need AzureTTS or is it sufficient to have set up CMU Flite or/and eSpeak?

BTW: is there anywhere a better place to discuss about such issues, as they are most probably based on my configuration? Could you set up the wiki in this repositiory, then I could provide the list of steps needed to get a (hopefully) working Bender.

sindar commented 3 years ago

Hi, t0mx. I would try to run only pocketsphinx first with logs enabled: pocketsphinx_continuous -dictcase yes -inmic yes -ds 3 -samprate 8000 -hmm /home/pi/pRodriguezAssistant/common/resources/en/cmusphinx-en-us-ptm-8khz-5.2 -dict /home/pi/pRodriguezAssistant/profiles/bender/resources/en/bender.dic -jsgf /home/pi/pRodriguezAssistant/profiles/bender/resources/en/bender.jsgf You can message me on FB: https://web.facebook.com/profile.php?id=100009716298519, but I think it's ok here, maybe it will be useful for someone else.

sindar commented 3 years ago

Hi, t0mx. Did you manage all of the problems? If you need it, maybe, I've uploaded an image with compiled Sphinxbase and Pocketsphinx: https://drive.google.com/file/d/1xdNmV0Isbw2IvUw92X6hk4LvUoB9HjRf/view?usp=sharing

t0mx commented 3 years ago

Hello Sergey, no, I was still struggling resp. trying different options. I'll try, thank you for the image!

Am Fr., 30. Juli 2021 um 20:01 Uhr schrieb Sergey @.***

:

Hi, t0mx. Did you manage all of the problems? If you need it, maybe, I've uploaded an image with compiled Sphinxbase and Pocketsphinx: https://drive.google.com/file/d/1xdNmV0Isbw2IvUw92X6hk4LvUoB9HjRf/view?usp=sharing

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/sindar/pRodriguezAssistant/issues/6#issuecomment-890061481, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANSSWS3FJXYV65J5BOWN56DT2LSHLANCNFSM42I4OKKQ .

t0mx commented 3 years ago

I've finally managed to run pocketsphinx_continuous. Currently using your image, but I think the problem was actually the missing record device. With RECORD_DEVICE = 'plughw:1,0' it works for c-media. Do you have any idea, why? Now I have to learn more about Bender functions.

EDIT: ok, one more thing, I had to edit /etc/asound.conf:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw
    card 1
}
sindar commented 3 years ago

Yes, it's normal, because a HDMI device is "0" on RPi.

t0mx commented 3 years ago

But the default setting for c-media was RECORD_DEVICE = None and this was obviously causing my problems.

Is there anywhere any starting point, how to proceed further to get Bender working? I'm interesting in both versions, English and Russian. I guess, it won't be simply to teach him German?

sindar commented 3 years ago

But the default setting for c-media was RECORD_DEVICE = None and this was obviously causing my problems.

Well, I don't remember for sure tbh, I left it as a commented example in system_settings_usb_audio_c-media.py, maybe I managed to use it as a default recording device, and I don't have my Bender right now at hand to check.

Is there anywhere any starting point, how to proceed further to get Bender working? I'm interesting in both versions, English and Russian. I guess, it won't be simply to teach him German?

Does simply run "sudo python3 robot.py" not work for you? Regarding German, the main problem is to make a voice model. There is a service for English - http://www.speech.cs.cmu.edu/tools/lmtool-new.html, and for Russian there is a script - https://github.com/zamiron/ru4sphinx I don't know about German, maybe there is something similar on the Internet. As I know phonetic models for many languages could be created with the tools provided with eSpeak speech synthesis package, but I've never tried this approach. Here are the German models for Sphinx: https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/German/ You can use them, but they are big, so they won't be fast on a RPi Zero, but there is some information how it was done, and a contact e-mail of the author.

t0mx commented 3 years ago

"sudo python3 robot.py" seems to work, the RPI seems to wait for commands, but which commands in which languages are available? How to configure?

sindar commented 3 years ago

"sudo python3 robot.py" seems to work, the RPI seems to wait for commands, but which commands in which languages are available? How to configure?

At first, you can take a look into -https://github.com/sindar/pRodriguezAssistant/blob/master/profiles/bender/resources/en/bender.jsgf It's a Bender's grammar file in JSGF format. As an example:

= [hey | hi | hello] (bender); - it's a wake-word command to start interact with Bender. (bender) means it is required, while one of the: [hey | hi | hello] is optional. After that you can try to ask him something, like this: = (how are you);