Forum Replies Created
June 7, 2020 at 7:47 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #646
During the lockdown the donations to the public domain "Common Voice" dataset from Mozilla increased by over 65%. There are now over 75 hours of speech in Esperanto by over 400 persons, so we are slowly getting into an area where its possible to create a first experimental speech recognition in EO. from Esperanto
So you tried a manual installation first, then switched to Naobian, then re-did the manual installation and finally got it to work? When you did get it to work, which version did you use? (what was the git command line you used?)
I’m curious because things have changed a lot in the last year.
I’ll try to get a couple of buster images up later this weekend which should resolve the RPi4 issue.
I have downloaded and burned Naobian-1.0.img to an SD card and tried starting my RPi4B with it which failed. Then I moved it to my RPi3B+ which booted correctly and I was able to access via SSH. There must be an incompatibility between Naobian and the RPi4B. I have been running Naomi on Raspbian Buster on the RPi4B for a while now, so I know the manual install works.
I think Naobian is based on Raspbian Stretch, and according to this chart: https://en.wikipedia.org/wiki/Raspbian#Version_history Stretch is not compatible with the RPi4, which is probably the issue.
Naomi is very much a work in progress at the moment. The whole system is set up to use plugins in order to encourage experimentation, so starting by getting the source directly from github
git clone -b naomi-dev https://github.com/NaomiProject/Naomi.git --origin upstreamis generally going to be a good idea.
I’m not sure when the image will be updated to Buster.
The Naobian image should work fine with the Raspberry Pi 4. Have you been able to boot up Raspbian?
You can also just install Raspbian 10 Buster (or really any Raspberry Pi Linux OS, but Raspbian is easier) and install Naomi on top of it.
I have a Raspberry Pi 4B 4GiB machine here. I will try downloading Naobian-1.0 and installing it later tonight. Do you have the Pi connected to a TV, or are you running it headless?
I believe I have duplicated your setup with the following commands:
$ git clone https://github.com/NaomiProject/Naomi.git
$ pip install –user pyyaml
$ pip install –user awesome-slugify
$ pip install –user blessings
$ pip install –user feedparser
$ pip install –user pytz
$ pip install –user mad
[?] Select Language: EN-English//
So it still works fine when I run Populate.py.
I don’t understand what the problem is with your copy of slugify, or what other programs you have installed on your Pi that might be affecting things, but I think you have four options at this point.
1) Stay on the Naomi master branch and use the naomi-setup.sh program to install a custom version of python at ~/.naomi/local (this makes setup more difficult because when setting up modules, you have to remember to always use ~/.naomi/local/bin/python instead of python and ~/.naomi/local/bin/pip instead of pip).
2) Stay on the Naomi master branch and use VirtualEnvWrapper to create a custom python environment. This is easier because you only have to remember to always “workon” the Naomi environment before starting Naomi.
3) Move to the naomi-dev branch (git fetch origin naomi-dev; git checkout naomi-dev) and use naomi-setup.sh to either create a virtual environment or setup a custom installation of python (creating a virtual environment is recommended because it is easier to work with in general and some users have reported problems when compiling python from source).
4) Get a new SD card and just install Naomi directly on its own card, then either switch cards when you need to run Naomi, or copy the data/applications you need from the other card once you have a stable Naomi intallation. You might even want to try the pre-set Naobian sd card image.
I have tried reinstalling, and it works again, although it appears that I haven’t duplicated your setup. It appears that you have installed your python libraries to your local user account. It also appears that you have installed awesome-slugify rather than slugify, but that seems to work fine for me also.
This error appears to relate to your python setup, not naomi specifically, but I’ll try to help.
Could you insert some code into /home/pi/.local/lib/python2.7/site-packages/regex/regex.py just before whatever is triggering the error that shows what the string is that is being processed? It sounds like there is probably an errant dash somewhere, causing regex.py to try to interpret expression as a range.
Also, if you can use history to get a list of the exact commands you used to install Naomi, that would be helpful.
I was able to get Naomi 2.2 up and running as is. Looking closer at your error message, it appears that the last line being run from the Naomi source code is
File “/home/pi/Naomi/naomi/audioengine.py”, line 5, in <module> import slugify
I tried to find out what the regex could be that is being referenced, but my system doesn’t even have a regex.py module. I will start with a new virtual Raspbian 10 system and install using the naomi-setup.sh and see if I can recreate this problem.
I’m still going through the process of installing Naomi 2.2 on my system, and have meetings today and am flying tomorrow, but will be able to do some work this weekend.
Which version of Raspbian are you using on your Pi? What version Raspberry pi is it?
Thank you for trying Naomi! Installation is definitely the hardest part, and I’m sorry you ran into some difficulty.
The Naomi 2.2 “stable” version is over a year old at this point and is lacking a lot of new features, so I highly recommend using the naomi-dev branch.
Unfortunately, I am boarding a plane at the moment and am about to be unavailable for the next 8 hours or so, but I’ll be happy to troubleshoot this problem with you when I am back on the ground.
In the meantime, can you provide some additional details about your setup? Does this error occur as soon as you try to start naomi the first time?October 24, 2019 at 10:22 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #612
Oh, and again, you would be building your model for you. Your voice, your accent. Then you can pass the basic model to someone with a different accent for them to continue adapting it. Hopefully we can make it really easy to share and mix language models. That’s all pretty new stuff, though.October 24, 2019 at 10:20 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #611
Yes, it will probably be quite a bit of work. Unless you can find a pre-built esperanto acoustic model. Even then, translating every utterance in Naomi will be a challenge.
For french and german, by the way, I’ve had better luck with pico than with flite for some reason. I’d be interested to hear what the best speech to text engine is for esperanto.October 24, 2019 at 10:10 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #609
Okay, thanks.October 24, 2019 at 9:38 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #605
By the way, did you create your avatar, or was it just assigned to you? I haven’t figured out how to change the profile pic yet.October 24, 2019 at 9:37 pm in reply to: Where to start developing a acoustic model for Esperanto for CMUSphinx #604
Hey, I think you are the first person besides me to use the forums. This is fairly new, so I’m still just learning my way around.
Here is a description of the process of training a new model:
From what I understand, esperanto is a pretty phonetic language, so it may be pretty straightforward to build a phonetic dictionary, if each letter corresponds to only one phoneme, you may be able to write a script generate phonetic transcriptions from a set of esperanto words.
Unfortunately, you also need to train your model using audio clips, which Naomi might be able to help with. You’ll need to set Naomi to eo mode and create trainslation files. You can use
./update_translations --language=eofrom the Naomi directory. You will need to adjust the headers of those files, but that’s mostly just going to require figuring out one and basically copying it to the others. There are controls for the ways that plurals are designated, etc.
As far as building an acoustic model for Pocketsphinx, I’m thinking that you can probably start by adapting a model with similar phonemes, like spanish (https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Spanish/), to your phoneme dictionary. You should put all the HMM files into a folder at ~/.naomi/pocketsphinx/standard/eo/. You should have the files “cmudict.dict” (which you create yourself), “feat.params”, “mdef”, “means”, “mixture_weights”, “noisedict”, “sendump”, “transition_matrices” and “variances”,
Once you have a phoneme to grapheme dictionary, you can use the steps in https://projectnaomi.com/dev/docs/plugins/pocketsphinx-install.html to try to generate a basic model.
Here is the official training guide. I’m hoping you can get away with adapting a model rather than training a new model.
With Naomi there are a bunch of settings for capturing and storing audio clips in a database. So open ~/.naomi/configs/profile.yaml and add
save_active_audio: True, or use the “–save-audio” flag on the command line. This creates a sqlite3 database at ~/.naomi/audiolog/audiolog.db. The actual audio clips are stored in .wav files in the same directory. When recording audio for training, I always also set the
print_transcript: Trueoption in profile.yml, so I can follow see more clearly what Naomi is and isn’t getting. This may lead you to modify your phoneme mapping if Naomi is pretty consistently mishearing certain words. It doesn’t have to be the whole dictionary either. Pocketsphinx performs much better with a limited dictionary of just the words you are most likely to use.
It probably won’t understand you well at all at first, but you can train it to your specific voice, which actually works pretty well. Once you have some audio clips, you can run the NaomiSTTTrainer.py program, which will start a small webserver and launch your browser. From there you can review your own audio files and correct Naomi’s transcriptions. When you are ready, click on the “Train STT Engines” tab and select the “Adapt Pocketsphinx” button. This will use all the clips that you have corrected or verified to train the model to your clips.
Now, having a model that understands you specifically is great, but creating a model that a lot of people can use with a lot of different voices and inflections and whatnot will take longer and require a few people to participate, but you can send them your trained model to start with, and the data they add will help create a more general listener, that will then be a better starting point for new listeners.
This is one of the strengths of Naomi right now, while everyone is building composite models that understand everyone poorly, you can have a specific model that understands just you less poorly.
The database also collects word error rates, which can be used to help track how your model improves as you provide more training data.
Don’t throw your recordings away, either. We will use them down the road for training Deepspeech and Kaldi models, which should provide better accuracy.
Please let me know if you need additional help.