Jump to content

TKTalkie V2.0 Released!


Recommended Posts

VERSION 3 NOW AVAILABLE!

 

TKTalkie is a DIY voice effects project that you can build.  Version 2 of the TKTalkie software has been released with some significant improvements.

 

 

The goal of this release was to allow you to be able to configure and tweak settings WITHOUT having to edit and recompile the source code.

  • Added support for text config file that holds all settings.
  • Added serial interface that lets you LIVE edit settings so you can test in real-time.
  • You can save and load different config settings files, allowing you to create custom configs for different applications of TKTalkie.
  • Added Calibration Wizard that helps you find optimum settings for Voice Activation.
  • Added support for background (chatter) loop.

Version 2 source code is here.

 

If you are using Version 1, see how to upgrade.

 

Original Whitearmor.net topic is here.

 

Visit www.TkTalkie.com for more information including tutorials!

 

 

UPDATE: Version 2.2 has been released with some additions!

 

Please go to www.tktalkie.com for updated code and the new tutorial.

Edited by lerxstrulz
  • Like 4
Link to comment
Share on other sites

I FINALLY ordered my kit and hope to have it next week. Looking forward to the added capabilities and less room taken up inside my helmet by the iCOMM. I run everything inside my helmet minus the power supply so space is at a premium. 

Link to comment
Share on other sites

Hi all,

 

the project is very cool. I have all the parts connected / soldered them but cannot handle the massive feedback problem (Version 1.1 or 2: no difference). I want to have all parts in the helmet and would like to install the speaker (it's not a aker speaker) in the chin. I played with the parameters (eg. mic gain) without success.

 

Do you have any ideas to eliminate the feedback? I also tries to isolate the speaker with foam material. In my opinion this had no effect.

 

Anyone installed all parts in the helmet?

 

Any advice is welcome.

Link to comment
Share on other sites

I got my v2 assembled and working, with one issue: when I save my settings, it appends them to the settings file instead of replacing. This causes the whole thing to fail when I reboot. (I just hear kind of a flanged droning sound and no mic input is processed.) I was able to reproduce this repeatedly.

 

Thanks for working on this project. I love how configurable it is.

 

Original config file:

 


# TKTALKIE v2.0

# These are the default settings!  Please visit TkTalkie.com
# to see how to modify for your setup.
 
# sound to play when TKTalkie is started
[startup=STARTUP.WAV]
 
# chatter loop settings
[loop=CHATTER.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[loop_gain=7]
 
# VOICE ACTIVATION SETTINGS
[silence_time=350]
[voice_start=0.35]
[voice_stop=0.02]
 
# PTT (Push-To-Talk) SETTINGS
[button_pin=2]
[button_click=BUTTON.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[button_gain=1]
 
# MICROPHONE/LINE-IN SETTINGS
# input settings (0 = microphone, 1 = line-in)
[input=0]
# 0 to 63
[mic_gain=15]
 
# SOUND EFFECTS (STATIC BURSTS, ETC.)
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[effects_gain=5]
 
# EQUALIZER SETTINGS
# 0 = flat (none, 1 = parametric, 2 = bass/treble, 3 = graphic
[eq=3]
# for parametric/graphic = 5 bands, for bass/treble = 3 bands
# bands are low to high: -1 (-11.75dB to 1 +12dB)
[eq_bands=-1,0,1,0,-1]
 
# VOICE SETTINGS
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[voice_gain=1]
 
# BITCRUSHER SETTINGS - VOCAL EFFECTS
# Format = bits1,rate1,bits2,rate2
# Set to 16,41000,16,41000 to just pass-thru (disable)
[bitcrushers=12,16384,10,10240]
 
# PINK NOISE GENERATOR
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[noise_gain=1]
 
# Turn debug messages on/off (1/0)
[debug=0]

 

 

After making a change and using "save" command:

 

 

# TKTALKIE v2.0

# These are the default settings!  Please visit TkTalkie.com
# to see how to modify for your setup.
 
# sound to play when TKTalkie is started
[startup=STARTUP.WAV]
 
# chatter loop settings
[loop=CHATTER.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[loop_gain=7]
 
# VOICE ACTIVATION SETTINGS
[silence_time=350]
[voice_start=0.35]
[voice_stop=0.02]
 
# PTT (Push-To-Talk) SETTINGS
[button_pin=2]
[button_click=BUTTON.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[button_gain=1]
 
# MICROPHONE/LINE-IN SETTINGS
# input settings (0 = microphone, 1 = line-in)
[input=0]
# 0 to 63
[mic_gain=15]
 
# SOUND EFFECTS (STATIC BURSTS, ETC.)
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[effects_gain=5]
 
# EQUALIZER SETTINGS
# 0 = flat (none, 1 = parametric, 2 = bass/treble, 3 = graphic
[eq=3]
# for parametric/graphic = 5 bands, for bass/treble = 3 bands
# bands are low to high: -1 (-11.75dB to 1 +12dB)
[eq_bands=-1,0,1,0,-1]
 
# VOICE SETTINGS
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[voice_gain=1]
 
# BITCRUSHER SETTINGS - VOCAL EFFECTS
# Format = bits1,rate1,bits2,rate2
# Set to 16,41000,16,41000 to just pass-thru (disable)
[bitcrushers=12,16384,10,10240]
 
# PINK NOISE GENERATOR
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[noise_gain=1]
 
# Turn debug messages on/off (1/0)
[debug=0]
# sound to play when TKTalkie is started
[startup=STARTUP.WAV]
# chatter loop settings
[loop=CHATTER.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[loop_gain=7.0000]
# VOICE ACTIVATION SETTINGS
[silence_time=350]
[voice_start=0.3500]
[voice_stop=  0.020]
# PTT (Push-To-Talk) SETTINGS
[button_pin=2]
[button_click=BUTTON.WAV]
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[button_gain=1.0000]
# MICROPHONE/LINE-IN SETTINGS
# input settings (0 = microphone, 1 = line-in)
[input=1]
# 0 to 63
[mic_gain=15]
# SOUND EFFECTS (STATIC BURSTS, ETC.)
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[effects_gain=5.0000]
# EQUALIZER SETTINGS
# 0 = flat (none, 1 = parametric, 2 = bass/treble, 3 = graphic
[eq=3]
# for parametric/graphic = 5 bands, for bass/treble = 3 bands
# bands are low to high: -1 (-11.75dB to 1 +12dB)
[eq_bands=-1.00,0.00,1.00,0.00,-1.00,0.00]
# VOICE SETTINGS
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[voice_gain=5.0000]
# BITCRUSHER SETTINGS - VOCAL EFFECTS
# Format = bits1,rate1,bits2,rate2
# Set to 16,41000,16,41000 to just pass-thru (disable)
[bitcrushers=12,16384,10,10240]
# PINK NOISE GENERATOR
# 0 to 32767, 1 is pass-thru, below 1 attenuates signal
[noise_gain=1.0000]
 

 

Edited by TanRu
Link to comment
Share on other sites

I made a quick change to the code to check if the file exists (and blow it away if it does), but there's still something funky with the format being written and the app doesn't read it properly.

 

File openFile(String filename, int mode) 
{
  char buf[filename.length()+2];
  filename.toCharArray(buf, filename.length()+2);
  if(mode == FILE_WRITE){
    if(SD.exists(buf)){
      SD.remove(buf);
    }
  }
  return SD.open(buf, mode);  
}
Link to comment
Share on other sites

I used 3.5 HDD screws I had laying around at work. Just had to drill the holes a tad larger. <br><br>

The problem I have right now is I can hardly hear it coming out my hovi tip speakers. I'm not sure if it's because I still have the teensy plugged into my laptop for power or there's something in the settings. My mic is plugged into 3.5mm I added on the teensy. On board out is connected mic on Ukswrath's amp2, and hovi connected to speaker on amp 2. The teensy volume is turned all the way as well as amp2.

Link to comment
Share on other sites

Hi all,

 

the project is very cool. I have all the parts connected / soldered them but cannot handle the massive feedback problem (Version 1.1 or 2: no difference). I want to have all parts in the helmet and would like to install the speaker (it's not a aker speaker) in the chin. I played with the parameters (eg. mic gain) without success.

 

Do you have any ideas to eliminate the feedback? I also tries to isolate the speaker with foam material. In my opinion this had no effect.

 

Anyone installed all parts in the helmet?

 

Any advice is welcome.

 

Eek no...I have a wireless mic in my helmet and everything else behind the chestplate (incl Aker.)  At first I got really bad feedback when I cranked up the Aker and after messing around with settings realized the mic gain was way too high at the default 36 and tuned it to 15 and now I can crank the speaker pretty loud.

 

If you are putting everything in the helmet, you may also need to insulate the TKTalkie board.  If you will post or PM your config file I'll take a look at the settings and see if there is anything to tweak.

 

Also, don't forget you can tweak settings on-the-fly with the serial interface in V2, so it may help to hook everything up and play with settings in real-time.

Link to comment
Share on other sites

 

I made a quick change to the code to check if the file exists (and blow it away if it does), but there's still something funky with the format being written and the app doesn't read it properly.

 

File openFile(String filename, int mode) 
{
  char buf[filename.length()+2];
  filename.toCharArray(buf, filename.length()+2);
  if(mode == FILE_WRITE){
    if(SD.exists(buf)){
      SD.remove(buf);
    }
  }
  return SD.open(buf, mode);  
}

 

 

Oops hey yeah thanks for that!  I actually have that added but didn't get committed to the repo...

 

Can you post or PM what your file looks like after saving?

Link to comment
Share on other sites

Oops hey yeah thanks for that!  I actually have that added but didn't get committed to the repo...

 

Can you post or PM what your file looks like after saving?

 

I'll have to hook everything back up when I get home, but I believe it looks like the second half of the file I posted above above, starting with the second instance of "#sound to play...".

Link to comment
Share on other sites

I used 3.5 HDD screws I had laying around at work. Just had to drill the holes a tad larger. <br><br>

The problem I have right now is I can hardly hear it coming out my hovi tip speakers. I'm not sure if it's because I still have the teensy plugged into my laptop for power or there's something in the settings. My mic is plugged into 3.5mm I added on the teensy. On board out is connected mic on Ukswrath's amp2, and hovi connected to speaker on amp 2. The teensy volume is turned all the way as well as amp2.

 

I noticed on my first build that the thumb (volume) pot did not work properly.  I doubled checked all the solder points and they were fine.  In the V2 software you can directly override the input from the volume pot, so maybe try setting the volume there to see if the volume pot is maybe not working correctly.  The setting is:

 

[volume=n]  // 0.0 to 1.0

 

You can also set the gain on the effects (effects_gain) and voice (voice_gain) channels (0 to 32767).  1 = pass thru, < 1 attenuates (mutes) and > 1 boosts

Link to comment
Share on other sites

I'll have to hook everything back up when I get home, but I believe it looks like the second half of the file I posted above above, starting with the second instance of "#sound to play...".

 

Ok I will copy that and try it later this eve as well.

 

One thing I noticed is there is a space for [voice_stop=  0.020]  That might be causing it.

 

Try adding this to the beginning of the parseSetting function:

 

settingName = settingName.trim();

settingValue = settingValue.trim();
 
I won't be able to test this until later tonight, though.
Link to comment
Share on other sites

I'm in the middle of a house move so hopefully in a week I'll have my workspace set back up. I think the volume knob may be the issue or I'll have to cave and start using a Anker speaker instead of hovi tip speakers.

 

In v1 and v1.1 the input channels for voice and effects are heavily attenuated (muted).  Once you are set back up I bet you can get those channels pretty loud by pushing them over 1 (limit is 32767).  You will prob have to lower mic gain to compensate for the extra levels to avoid feedback, but I bet you can get it all pushed up pretty loud for the Hovis.

Link to comment
Share on other sites

 

I made a quick change to the code to check if the file exists (and blow it away if it does), but there's still something funky with the format being written and the app doesn't read it properly.

 

File openFile(String filename, int mode) 
{
  char buf[filename.length()+2];
  filename.toCharArray(buf, filename.length()+2);
  if(mode == FILE_WRITE){
    if(SD.exists(buf)){
      SD.remove(buf);
    }
  }
  return SD.open(buf, mode);  
}

 

 

Ok I posted a code update that fixed a the file save issue  (credited in code) and another issue regarding the background loop restarting too soon.

 

It is able to read the saved file and parse it ok.  Let me know if this update does not fix your problem.

  • Like 1
Link to comment
Share on other sites

I am working on building my own Aker-style unit that, like the Icomm combo, will power the TKTalkie from the speaker unit. The amplifier that I am using has an output enable pin that when grounded shuts down the amp to conserve power, so I am trying to figure out a way to have the TKTalkie code set that pin to ground when no audio is playing and then set it high just prior to calling to play a file or sending some mic output through.

 

Second, the power boost converter I am using to step up the 3.7V lithium cells to 5V has a low battery output, that I am sending to the TKTalkie so that it will play a "LOWBATT.wav" file to alert you if your about to have a "bad comm" situation.

 

I will post some code later.

 

TI-Talkie.jpg

  • Like 1
Link to comment
Share on other sites

So cool seeing things people come up with. 

 

In v1 and v1.1 the input channels for voice and effects are heavily attenuated (muted).  Once you are set back up I bet you can get those channels pretty loud by pushing them over 1 (limit is 32767).  You will prob have to lower mic gain to compensate for the extra levels to avoid feedback, but I bet you can get it all pushed up pretty loud for the Hovis.

 

I have v2 installed and I noticed I can change all the settings. Just need the time. We are slowly moving a mile down the road and should be done by the weekend hopefully! One thing I noticed when I did play with it, is there a way to confirm the teensy is using the text file settings instead of the compiled code? 

Link to comment
Share on other sites

I am working on building my own Aker-style unit that, like the Icomm combo, will power the TKTalkie from the speaker unit. The amplifier that I am using has an output enable pin that when grounded shuts down the amp to conserve power, so I am trying to figure out a way to have the TKTalkie code set that pin to ground when no audio is playing and then set it high just prior to calling to play a file or sending some mic output through.

 

Very cool!  You should be able to piggyback this in the VoiceOn() and VoiceOff() functions.  Just assign the pin in setup() (you may need to set it to HIGH as well to activate it), then you should be able to send HIGH in VoiceOn() and LOW in VoiceOff().  It "may" cause a pop when you turn it on and off, but that would be a cool effect IMO.

 

 

Second, the power boost converter I am using to step up the 3.7V lithium cells to 5V has a low battery output, that I am sending to the TKTalkie so that it will play a "LOWBATT.wav" file to alert you if your about to have a "bad comm" situation.

 

Awesome!  Can't wait to see it!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...