Alena’s Status Report for 12/7

This week I was able to figure out how to use Bluetooth classic with the pico w.  I was able to configure the pico as an A2DP source and connect it to the Raspberry Pi which acted as the sink, and was able to transmit audio from one to the other. However, I am having trouble integrating the microphone code with the bluetooth code, since the PCM to SBC encoding is messing up somewhere along the line. The output on the Raspberry Pi is very noisy, but you can vaguely make out what the voice is saying, it just sounds very robotic. I think there’s some more filtering that I’m going to have to do.

I also researched a GPT integration with the voice command algorithm and got it to work in conjunction with my existing algorithm, so I am looking in to making the voice command output more “human” instead of just hardcoding responses based on the recipe steps. I also was able to integrate the pyttsx3 with Raspberry Pi so that the outputs can be heard on a bluetooth speaker/headset. Overall, I made a lot of progress this week, and there are multiple options we can consider for the final project. Unfortunately the wireless mic needs to be tuned a lot more, so depending on how much time we have for that, the final product may need to have a wired mic.

Team Status Report for 12/7

What are the most significant risks that could jeopardize the success of theproject? How are these risks being managed? What contingency plans are ready?

  • Currently, the most significant risk is still going wireless.
  • The contingency plan is to keep the wired connection between this subsystem, while improving upon the subsystem integration (sending recipe steps to the LCD, etc.)

Were any changes made to the existing design of the system (requirements,block diagram, system spec, etc)? Why was this change necessary, what costsdoes the change incur, and how will these costs be mitigated going forward?

  • We may potentially need to stay wired in terms of audio input, which would change the CAD a bit to account for that.
  • Requirements have stayed the same otherwise, as keeping the subsystem wired reduces latency and improves accuracy greatly.

Alena’s Status Report for 11/30

The past two weeks I ironed out some issues that showed up with the wireless communication between the pico and the Raspberry Pi. I added functionality to the voice command algorithm such that now recipe steps are sent to the glasses when needed, and so the steps are displayed when the user is in the cooking state. I looked into making the pico wireless using BLE instead of TCP, but my code is still buggy and it doesn’t work as intended, so I will spend the next week figuring that out. In terms of integration, Michelle and I decided to use two Picos instead of 1 for the glasses to balance out, so that makes the LCD and mic/speaker code integration a lot easier. I also have been working on implementing and bringing up the speaker to take in output data from the Pi through TCP. There are a couple small issues with the Pyttsx3 library on the Raspberry Pi, but they are mainly just warnings that aren’t affecting the main functionality yet (hopefully never…). I also did the latency and accuracy testing for the voice command algorithm, including how long it takes to take in input, process it, and give the output. 

Progress is on track so far, I am hoping to get the speaker working by the end of the week and also figuring out what is causing issues for the bluetooth mic integration with the pico. I want to have some more testing done on the “integration” side as well, so for example, how long it takes to have stuff show up on the LCD after being sent from the Pi, and also any potential latency that is introduced as a result of the BLE implementation.

Alena’s Status Report for 11/16

This week I finalized the voice command algorithm including adding support for getting and posting requests and interfacing with Kayla’s web app code to send ingredients lists and receive recipes, refactored my original design to take better care of extraneous voice inputs by using a switch statement, and added a lot of extra functionality for the recipe process. I gave the user a lot more leeway into different choices they can make throughout the cooking process. In terms of hardware, I set up the Raspberry Pi 5 and installed all of the required libraries for the voice commands and the microphone. Then I was able to successfully run the voice command algorithm with the Pico microphone that I configured, and the entire system works as expected. Integration with Kayla is essentially finished.

I spent a lot of the first half of the week trying to figure out how to make the mic wireless, but I ran into countless issues figuring out how the lwip (lightweight tcp/ip protocol) on the pico W would work for sockets/sending and receiving information. Eventually I decided that I would spend time this coming week + over break to figure that out, and if not then take an approach with BLE (bluetooth). Also, Michelle and I are running into issues with our integration because we used different platforms for our picos (micropython and C/C++), so we are going to have to work on that as well. But otherwise, progress is pretty on track.

My next steps are to integrate the pyttsx3 responses into speaker output, integrate my code with Michelle’s, and figure out how to make the mic wireless.

Alena’s Status Report for 11/9

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

  • This week, I worked on the microphone integration with the voice commands. I was able to get the microphone to initialize and act as a USB microphone to my laptop, as well as have my voice commands algorithm recognize my input mic.

Is your progress on schedule or behind. If you are behind, what actions will betaken to catch up to the project schedule?

  • I am behind schedule in terms of the mic because it took a while to initialize, but now I need to look into the Pi to Pi communication and somehow reconfigure the mic so that instead of being a USB/UART connection, it acts as a wireless mic.

What deliverables do you hope to complete in the next week?

  • In the next week I hope to have the TCP/Wi-Fi integration for the mic completed, as well as added enhancements to the voice command algorithm.

Alena’s Status Report for 11/2

This week I continued to work on the microphone hardware initialization. I am running into some issues with exporting audio data, and am exploring options for how to send the data from the Pi to the voice command algorithm that I implemented. The integration of both is a bit challenging, and I’m still working on assessing the quality of the microphone. We may potentially need to switch out a part for a new microphone, but that will be finalized by mid-next week.

Progress is a bit behind because I’m running into more obstacles for initialization than I thought, but I will have the updated information relayed to Michelle by the end of the weekend. By next week, I hope to have this completed and fully integrated with voice commands. Then we can do some more integration testing with the whole system.

Alena’s Status Report for 10/26

What did you personally accomplish this week on the project?

Continued to refine voice command algorithm and drafted some new ideas for selecting recipes with voice commands. Most of my work was done on the hardware bringup for the microphone. I was able to get that working with the pico, but there are some latency issues with capturing audio that I am running into. I am trying to debug it by checking the waveform and potentially saving the audio into some output file to test.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

So far pretty on schedule, but a bit behind on voice command/mic integration. I will focus more on debugging the microphone, and if needed, we may need to order a separate microphone.

What deliverables do you hope to complete in the next week?

In the next week, I will try to finalize integration between the mic and the voice commands/determine if we need a new mic, and continue to iron out any edge cases that show up in the voice command algorithm through our discussions.

Alena’s Status Report for 10/20

What did you personally accomplish this week on the project?

I refined some of the voice commands so that ingredients listing is easier and filters out some “random” phrases when parsing the ingredients.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

The progress is slightly behind for embedded integration because I was hoping to have some more mic/voice command testing done but was not able to get that.

What deliverables do you hope to complete in the next week?

In the next week, I will try to finalize integration between the mic and the voice commands, and continue to iron out any edge cases that show up in the voice command algorithm.

Team Status Report for 10/5

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

The biggest risk that could jeopardize the success of our project is the communication between the Pi and the pico, and also the integration of all the subcomponents after they are implemented individually. We will mitigate these risks by focusing on integration testing after initial unit testing of each component. For example, we’ll need to make sure that the code for microphone input processing works seamlessly with the initial voice command prototype.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

We decided to host the website on a Raspberry Pi instead of on AWS just to make communication between the Pi and the pico easier. Also, we’ve lowered our total voice command latency requirement from 8 seconds (4 sec input, 4 sec output) to 6 seconds (4 sec input, 2 sec output), because the voice command library we are using supports a faster response time.

Alena’s Status Report for 10/5

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week I focused on refining the voice command algorithm, which included fixing bugs for user speech duration and also optimizing some of the background noise filtering. I did some comparison between the Google Web Speech API and the Microsoft Azure API, and decided to stay with the Google speech API for accuracy. I also refined some of the commands themselves, and made a tentative list of the current commands that the bot will support. I also used the pyttsx3 library to successfully generated prompts to respond to the user for each of these commands.

In terms of the embedded side, I did some tinkering with the speaker and the amplifier, and was also able to start some of the initialization code for connecting to the speaker.

Is your progress on schedule or behind. If you are behind, what actions will be
taken to catch up to the project schedule?

In terms of voice commands, we are actually ahead of schedule. However, we are still slightly behind on hardware integration since the PCB layout still needs to be done. We’ve decided to push the PCB back a bit so that we can confirm everything works with the pico on the breadboard first. I will be shifting my focus from voice commands to hardware integration and firmware coding for the next week.

What deliverables do you hope to complete in the next week?

I hope to have the initial voice commands implementation finished, and also the microphone and speaker initialization with the pico done by this week.