How to add new vocabulary to Talko, the easy way

Previously, I had described here: how to do compress sound using a venerable Windows 3.1 tool: Qbox Pro. The process what quite long to setup and not always producing good results.

Today I discovered BlueWizard from this post.

BlueWizard runs on Mac and allows to tweak the process in real time to optimize the output!  The author has been kind enough to make some small tweaking just for the Arduino and Talko !

Simply open your file (which has to be recorded at 8 kHz with 16-bit depth ), click on the 2 tick boxes:
– “include hex prefix (0x)” to allow direct pasting into the Arduino IDE
– and “include explicit stop frame” to avoid the library producing gibberish noise a the end of the sound

then copy the resulting the data from the “Byte Stream” windows.

Bluewizard

Open the Arduino IDE and paste the data stream into your code before uploading it to Talko.

Let’s make  a sound and process it:

say -v"alex" "We are charging our battery. And now we are full of energy. We are the robots." -r 100 -o roboter.wave

converting to 8 kHz with 16-bit depth using SoX

sox roboter.wave -r 8k -b16 roboter.wav

and the compressed version made with Talko :

the Arduino code:

New Talko firmware : VCO mode can play semi-tones

The rev 2 of Talko’s firmware can now play notes over 2 octaves.

It may seem obvious to have a 1V/octave CV to note in a VCO mode but this was quite challenging to achieve.  (I may explain the process in another post as it  could be also applied for  another of my speech synths)

Connections

Quite easy:  just feed a pitch signal into the Pitch entry. Tune the synth up and down with the Bend pot and trigger the note with the Gate.
Set it to Bank 16 and play with the Sound pot to choose among the 26 vowels sounds.

(*) Please note that the Microbrute’s gate out can’t trigger Talko directly (it’s a Microbrute know impedance issue): use a gate buffer in between.

Sounds

The VCO sound very much like an organ and it’s quite fun to pass the audio through a guitar pedal like the Zoom 505:

The Microbrute can also send notes via its sequencer: this allows instant fun for the poor keyboard player like me!

#talko in VCO mode with the #arturia #microbrute as sequencer

Une publication partagée par Jean-Luc Deladrière (@polaxis) le

Firmware

The code is available here:  Talko 1.2 rev2
Right click to save it as a .hex file and use Easy uploader to install it into Talko.

User Manual

The manual has been updated to reflect  this revision : http://www.polaxis.be/wp-content/uploads/2016/05/Talko-Manual-1_2.pdf

3 new sounds banks for Talko

Talko’s code has been updated with 3 new sounds banks :

Bank 15 : French Vowels Male (5)

Talko new bank N°15

A post shared by Jean-Luc Deladrière (@polaxis) on

 

Bank 16 : English voiced allophones (72)

Bank 17 : VCO friendly voiced allophones (25)

This bank is a selection of allophones from bank 16 that produces nice looping sounds in VCO mode (great for mouth drumming for example)

The new code is available here
and can be uploaded with Easy uploader as described on the downloads page.

The updated manual is to be found here.

Have fun !

Talko 1.2 now available

IMG_5620-copie.jpg
Talko 1.2 are now in stock, both as kits and as assembled modules.

What’s new in version 1.2

– Rotary encoder for smoother Bank change
– Encoder’s button can be pressed to simulate the gate signal going HIGH and make the module speak.
– Mode selection via a 3 positions switch : Speech – Repeat – VCO
– Growling mode in VCO (turn the Bend pot fully CCW)

Talko-New-panel.png

My first patches

Beyond having it to speak and bending it in (the obvious) Speech mode, I would recommend testing the Repeat mode by feeding some rhythmic pattern into the Gate entry and particularly playing with the Gate length.

Another fun one is to set it to Bank 0, VCO mode, turn the Bend pot fully CCW for growling mode and then play with the Sound, Pitch and Speed pots.

Try also to press the rotary button while the Sound entry is being sequenced in VCO mode to hold notes on and manually alter the sequence.
Do you have a nice patch to recommend ?
Thanks in advance for sharing

Talko 1.2 is coming soon

Talko is an open source Arduino based LPC speech synthesizer. It’s firmware can be updated via the onboard USB port, using the standard Arduino IDE.

In Speech mode, the speech starts with a gate signal and complete before waiting for a new gate signal. The speech has the priority.

In Repeat mode, the speech starts and stops with the gate signal going high or low. The gate has the priority and the speech repeats while the gate is high. This mode is very useful to create crazy rhythms.

In VCO mode, the LPC engine loops while the gate is high, producing steady notes.

The VCO mode can also produce sounds using white noise instead of tones, making strange throat like sounds.

The sound synthesis can be is driven via CV signals or knobs to choose sounds and alter pitch, speed & bending.

Talko1.2

flyer1.2.pdf

LPC encoding for the Arduino’s Talkie library

Adding new sounds or vocabulary for the Talkie library is not straightforward and I needed a checklist to smoothen the process.
Here are the main steps :

Recording audio with Audacity

  • The recording has to be made at 8 kHz with 16-bit depth
  • Export to Wav signed 16-bit PCM(note that you can also use Audacity to re-sample the audio to 8000 kHz via the [track/re-sample] menu)

Converting sounds using SoX

Alternatively, you can also convert various audio format to 16 bits 8 kHz with SoX, using the following command:

sox audiodump.wav -r8000 -b16 audio-8k.wav

Coding with QBOX pro

QboxPro was made to code sounds for the venerable TMS5220 chip that Talkie library is emulating.

It runs only on an ancient system like Window XP or older

Note: it seems that QBOX doesn’t like when the audio starts immediately. In that case the compressed audio is totally inaudible, so adding a little pause before the sound starts helps a lot

Installation

Get the software here : ftp://ftp.whtech.com/pc%20utilities/qboxpro.zip

Don’t forget to install QBOX at the root of the disk : c:\QBOX and to move the QBOXPRO.ini file to c:\WINDOWS

Coding

The process of coding has already been described in detail here : http://furrtek.free.fr/index.php?a=speakandspell&ss=9&i=2

The process goes like this:

  • Create a new project using the following project parameters : Byte / 8 Khz / 5220 coding table
  • Goto Project and add the audio file
  • Choose process using : medium bit rate and pressing OK
  • Edit concatenation : insert concatenation after by adding a name; then insert phrase and press ok
  • Format it by choosing the first line in the format menu : LPC 10V, 4UV

Arduino code

Recuperate the .bin file that Qboxpro has generated This file contains the LPC stream and need to be translated into C++

I use this small Python script to convert the .bin

Simply paste the script’s outputs at their respective places into the Arduino code and upload

Here is an example I generated with the Mac’s say command (note the 0.3-second silent before the speech starts)[edit : it’s fine with 0.1 too]

say -v"Yannick" "[[slnc 300]] Wir sind die Roboter" -r 100 -o roboter.wave

then I converted to the appropriate format using SoX

sox roboter.wave -r 8k -b16 roboter.wav

After the QBOXpro coding and the Python converting, I copied these lines into the Arduino IDE

and here is how it sounds:

Talkie Eurorack Module – Part 2 : Schematic & Pcb

Schematic

Here is the schematic. Nothing really special : A simple RC filter I have used before with the Talkie library and a few pots to fiddle with the various functions. All the entries (cv and gate) are now protected with diodes to allow connections with modulars synths modules using higher voltages. A simple 7 segment to show the current playing mode. I plan to use the dot as the clock led

Talko1 0

PCB

I am ordering 8 Pcb from Beta Layout.
Here is the preview I got by uploading the file to their web site

20141228 0832 bot gold with mask with silk

Software

Added female voice used in the talking clock

New sound demo

Here is the setup : a clock with variable pulse width is triggering the sound and stepping a sequencer feeding cv to the module. A bit of reverb is sometimes added just for fun

More demo on my Soundcloud

Github

You can find all the files (hardware & software) on my Github

Next

  • To share the Mouser cart
  • Module assembly
  • Eurorack Panel design

SSI 263 text to speech in Python via Nanpy on the Arduino

The almighty SSI-263 speech synthesizer chip

As you can read on the Wikipedia page, the SSI-263 is the other name for the Votrax SC-02.
It is becoming quite difficult to find, much harder then it’s little brother the Votrax SC-01 but I finally got one by buying a Mockingboard B on Ebay.
The SSI-263 is TTL compatible and need only very few component to be added. It is very easy to connect it to an Arduino but is much more complex than the Votrax-SC01 to program.

Nanpy

As I planned to make many software iteration and process the text to speech routine from Python, I decided to use Nanpy on the Arduino to « relay » the instructions to the chip. I guess I could also use Firmata to do the job as I am using really basics stuff like writing bytes on various pins.

Schematics

The SSI-263 datasheet is quite easy to find and so the programming guide via some Google search but the best one I found is the Votrax SC-02 version that has an extra page at the end with a nice and very simple schematics to get started with .

As I plan to build a shield for the Arduino, I started to draw this in Eagle too :

ssi-263

You can download the Eagle version here
The chip needs a 1-2 MHz clock signal. I am using a Attiny 45 to do the job because all the timer pins are already in use on the Arduino. I have described how to use the Attiny45  to do this in a previous post

Books

The best reference to get started is the article from Steve Ciarca : “Build a Third-Generation Phonetic Speech Synthesizer ».
A complete version is available on Google books. Ciarcia, Steve, “Build a Third-Generation Phonetic Speech Synthesizer,” Byte, March, 1984, p 28. (SSI-263)
There is also a reference to the SSI-263 and to many other speaking chip in “Chip Talk: Projects in Speech Synthesis” but the chapter mainly refers to Steve’s article.
The book is still available in some second hand book shop (I got mine via Amazon). The information provided is minimal but it’s fun to ready about all these veterans speaking chips.
Prochnow, Dave, Chip Talk: Projects in Speech Synthesis, Tab Books, Blue Ridge Summit, PA: 1987. ISBN is 0-8306-1912-7 (hard cover) and 0-8306-2812-6 (paperback).
Have also a look here : http://www.redcedar.com/sc01.htm. The page is regularly updated and makes an excellent starting point.

Code

Here is the  Main code

The text-to speech is performed via a lookup in the CMU Dictionary (The dictionary can be install with these instructions : http://stackoverflow.com/questions/11911028/python-arpabet-phonetic-transcription)

It return an arpabet version of the text which is then translated into the Votrax allophone table.
(thank to this modified Arpabet to unicode script)
The allophone chain is then sent to the chip
The code is very basic and doesn’t use the SSI263 registers to their full potential : the voice generated is very robotic … but I like it a lot

Souncloud

Listen to the chip saying the Issac Assimov’s 3 laws of robotics with 2 different voice settings :

Todo

Next thing I will try is to add prosody or even make it sing
On the hardware side I plan to add a RC filter with  an amplifier and add a midi in to the circuit .. so stay tuned.