[Dave Shevett] has spent a lot of time (more than a year) expanding his Technomancer costume along with the companion (Arduino-driven) magic staff. He found, however, he needed a way to get his voice out from behind the mask. If you are going to go through that much trouble, you might as well augment your voice at the same time, right?
[Dave’s] voice changer uses a Raspberry Pi which isn’t all that complicated. The Pi uses Linux, and Unix–the predecessor to Linux–has a long history of having little tools you can string together to do big jobs. So once you have a Pi and a sound card, the rest is just some Linux command line wizardry.
There’s a battery and a small portable amplifier to get that booming voice. Since you don’t want to lug a keyboard and monitor around to handle every reboot, [Dave] set the Pi up to run his voice-changing scripts on each reboot.
This is a great example of why old Unix programmers make small tools and use the shell to join them together. [Dave’s] voice changer is pretty much just some off the shelf parts and a script so simple it hardly qualifies as programming in any real sense. In fact, it is essentially one line of “code”:
play "|rec --buffer 2048 -d pitch -300 echos 0.8 0.88 100 0.6 150 .5 band 1.2k 1.5k"
Sure, there is some street cred in embedded development to doing everything the hard way, but with the advent of cheap embedded Linux systems, why not take advantage of the tools where you can?
If you want a more roll-your-own approach, you can pick up your Arduino or break out an audio mixer (but good luck getting it in your costume).
a faster processor would be required to do live/instant processing?
You can do it with any DSP microcontroller or processor and some programming. Only idiots who can’t program even a washing machine would use RPi for that. There is even simple voice changer made with Arduino: http://hackaday.com/2012/10/12/arduino-voice-changer-turns-you-into-vader/
I must say the positive feedback and support I get from other geeks is heartwarming and fulfilling. And even though you didn’t ask, my reasoning for sticking with the Pi was looking for a generic platform solution I could use for other aspects of the costume going forward. For instance, I’m incorporating wireless communication between various components. Something possible with Arduinos, but easier with a full fledged OS and network stack. Thanks again for your thoughtful, supportive feedback!
It’s close to instant. There is a slight delay of less than a second.
The audio sounds really cool.
It’s a pity you have to view the source code to find the link to the audio file and then download and save it to the local machine and play it with a different audio player because the server it’s hosted on issues mime type text/pain for .m4a audio files.
It’s here by the way – http://planet-geek.com/wp-content/uploads/2015/10/Voice-024.m4a but to have to ‘save page as’ because you browser treats it as text. Then open it with something that plays audio.
Well rats, I blame WordPress for that one. I’ve updated the post to include a direct link to the file. Sorry about that!
It’s still sent as text/plain because of the file extension.
If you rename it to MP3 then most systems will send it to an audio player which most likely also supports m4a.
http://planet-geek.com/wp-content/uploads/2015/10/Voice-024.m4a
GET /wp-content/uploads/2015/10/Voice-024.m4a HTTP/1.1
Host: planet-geek.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:41.0) Gecko/20100101 Firefox/41.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://planet-geek.com/2015/10/29/hacks/using-a-raspberry-pi-as-a-realtime-voice-changer-for-halloween/
Cookie:
Connection: keep-alive
If-Modified-Since: Thu, 29 Oct 2015 13:11:44 GMT
If-None-Match: W/”6988e13-7e140-d70e400″
Cache-Control: max-age=0
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 31 Oct 2015 21:42:01 GMT
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Thu, 29 Oct 2015 13:11:44 GMT
Etag: W/”6988e13-7e140-d70e400″
Content-Encoding: gzip
———————————————————-
Oh cool, Darth Dollar Stote.
The RPi doesn’t have sound in – what are you using for the input? (I’m waiting for one of those cheap USB microphones to arrive from China but to be honest I don’t hold out a lot of hope for it working in the Pi, at least at first…)
Oh never mind, I just found the link to the full article. I thought this hackaday article was all there was. That’s happened to me before on Hackaday, they seldom give prominence to the offsite link. Looks like you used a very similar sound card to the one I ordered ($1.17 – cheap if you’re willing to wait 3 weeks…) http://www.ebay.com/itm/381338122460
I sort of lucked out – the USB sound board I’m using was double-shipped by mistake, so even though I wasn’t exactly breaking the bank at $5 or so i paid for the first one, getting two for that price made it worth it!
I keep getting a “-bash: play: command not found” error. Any suggestions?
apt-get install sox, it’s a suite of tools for working with audio and includes the “play” and “rec” commands in the post. It’s mentioned, but I had to figure it out too.
where do we enter this line of ‘code’??
just wondering since the Rpi 3 offers a variety of programming windows. (sorry i don’t know what else to call them)
i am getting an error “no such file or directory” “FAIL formats:cant open input pipe” and “premature EOF”
what could i do?