My alien already could carry on a conversation, but I still had to make a little speaker system to go along with him. Even though the coding was the hardest part by far on this project, my lack of fabrication skills made the speaker manufacturing the scariest part in its own way. I had tested a bluetooth ear piece with the speech to text function ahead of time so I knew a bluetooth device wouldn’t throw off the program, but this was a different product so I was still nervous. Then I received my bluetooth speaker and mic from Amazon.
At first I thought it worked fabulously when I connected it to the program, however since it was communicating through blue tooth, it made the images go out of sync. I panicked with little time let that it would not work, but there was also a way to plug the speaker directly into the computer. I did this and it obviously went back into sync. Surprisingly, once I unplugged it, the sound and imagery managed to stay in sync always even after it went back to blue tooth. I’m not sure the technical reason why, but I am happy I got it to work. Then I had to move on to the encasement. I had taken down the dimensions of the mic/speaker and made sure to order a part that would fit well inside of it.
This case from polycase was a perfect fit and with a price of only $5.48, it was an easy decision. Although I had built a holding box for my fortune teller, my partner Phil did most of the fabrication. I only designed the interface so this was the first time I would actually use the laser cutter on my own. I measured the speaker with a digital caliper and created this illustrator file for the laser printer.
Before using it on the actual encasement, I tried it out on cardboard. The hole fit perfectly with the speaker, however there were two random pixels cut into the cardboard as well. I tried to cut and past the design into another file again, but the pixels were still cut into the next piece of cardboard. I finally realized that the pixels were already in the template ITP has for the laser cutter. The final time I found them and deleted them BEFORE printing it again. The test on the cardboard came out perfect! And then I did it on the container itself and it went almost as well. My mistake was to forget to take the outline image off of the illustrator file so after it cut the hole, it started to work on the outside. I stopped it in time – it only grazed the side, but I was still proud of my handiwork!
Only after everything was said and done did I realize I was not supposed to cut plastic in the laser cutter! But I think the final product was worth it. Here’s the final speaker all together.
I think it’s very cute! But the fabrication of the speaker was not the only thing I had to take care of in the last few days. After using testing the alien, although he could continuously carry on a conversation, I realized there were a few design elements I needed to fix for the user experience. One is to make the log in button clear. To ensure everyone would know what button to press, I changed its color. It honestly pained me to take away the perfect blue original screen, but I needed to make him more user friendly.
The second issue was letting the user know when to talk and when not to speak. His listening recognition is only on when the alien is not speaking. I always knew it was working originally when I tested him because I kept the console.log open. Then I memorized what the screen looked like in-between the videos. It was almost a perfect match, but I knew it well enough to tell the difference. To make the user comfortable, I decided to add in red a transmission info and directions to let you know when you should speak. Here is the new interface when it is the user’s turn to ask a question.
I also noticed a few other things when people converse with him. When put on the spot, they panic and say things like, “Hello,” and “Are you there?” I decided he might need some smaller chit chat loaded in. I was able to keyword for “Hello” and give him a mirroring answer. I actually coded the answer for “Hi” or for “Hello”. Since I put a return at the end of each option in the for loop, I knew if I put this answer as the last option before random, it would only hit that answer if no other keywords were hit so I figured that would work pretty well. However, I could not figure out the keywords for “How are you?” or “Are you there?”. I have built answers for them, but I have not been able to get nested for loops to work yet. That is something I will continue to work on.
I also wanted him to have more random answers. I built four now instead of only one and recoded so he would choose a random answer out of the four in case you didn’t ask him a question he knew.
This worked perfectly! I still feel I need to make him more robust, but at least he has four options for answers he doesn’t know. Unfortunately, he often repeats the same one more than once in a row. I heard I might need to nest random within random code to make it truly random, but I have yet to explore that.