bobh / ESP32Talkie

116 stars 9 forks source link

Talkie

Speech library for Arduino

Modified for ESP-32 DAC pin 25.

YouTube demo: https://youtu.be/Q-VMNEvx4PE

This library hacks the previous version of Talkie.cpp and may not be compatible with the other processors anymore.

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 on Arduino, or the DAC pin on Teensy.

Note that currently, Talkie works only on 168 or 328 based Arduinos at 16MHz, and Teensy LC, 3.1 & 3.2. 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. On Teensy, a true analog output DAC is used.

Note that Talkie uses Timers 1 and 2 for PWM & timing, which may conflict with PWM outputs or other libraries. On Teensy, one of the available IntervalTimers is used.

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.

ESP32Talkie