going-digital / Talkie

Speech library for Arduino
305 stars 113 forks source link

Talkie

Speech library for Arduino

Quick start

Download the .zip file from the link at the top of the page or click here. Install the "talkie" directory in your Arduino / libraries directory. Restart the Arduino software, and pick one of the examples from the Talkie section. Program it onto a 168 or 328 based Arduino (Uno, Duemilanove or Diecimila - not a Mega or Leonardo). Connect headphones or an audio amplifier to digital pin 3.

Note that currently, Talkie only on 168 or 328 based Arduinos at 16MHz only. A reduced-CPU version for 8MHz devices with reduced speech quality is included in the Solder Time 2 talkie project.

Introduction

It is a software implementation of the Texas Instruments speech synthesis architecture (Linear Predictive Coding) from the late 1970s / early 1980s, as used on several popular applications:

Talkie comes with over 1000 words of speech data that can be included in your projects. Most words only take a fraction of a KB, so you can add plenty.

How to use the library

See the examples. Any commented data lines in the examples can be un-commented and used. Note that some speech libraries come with word endings such as '-S', '-Z', '-TEEN' that can be used to increase vocabulary.

Word dictionaries

The Audio output

Talkie sets up a special very high speed PWM, so audio can be taken directly from pin 3 with no other filtering.

Note that Talkie uses Timers 1 and 2 for this purpose, which may conflict with PWM outputs or other libraries.

Future plans

  1. I'm working on an encoder for generating your own recordings (See demo). Its not producing results of the quality I would like, but things are improving. For now Qboxpro, an unsupported old Windows application, can produce Talkie compatible data streams.
  2. Improve compatibility with other Arduinos and AVR devices
  3. Implement rule based infinite vocabulary synthesis from Computer Concepts Speech ROM and Texas Instruments Terminal Emulator 2.

Important facts

Thanks

This library was developed using Arduino and Freemat.