Skip to content
Text-to-Speech for Arduino
Branch: master
Clone or download
Latest commit 1fd972a Oct 23, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
eagle improve board labels Oct 23, 2018
examples ... Oct 20, 2018
images update Oct 20, 2018
sounds adding sound Feb 10, 2013
.gitignore ... Oct 20, 2018 break out sound.cpp; add support for esp8266 May 31, 2018 Backlink to has been added. Sep 7, 2018
TTS.cpp break out sound.cpp; add support for esp8266 May 31, 2018
TTS.h more cleanups Feb 1, 2018
keywords.txt initial commit Feb 2, 2013
library.json @platformio Library Registry manifest file Nov 2, 2017
sound.cpp support ESP32 Sep 6, 2018
sound.h break out sound.cpp; add support for esp8266 May 31, 2018

View this project on


Text-to-Speech for Arduino

  • requires an amplifier on the PWM output pin (see below)
  • see blog articles

Supported Hardware

  • ATmega328-based Arduinos (e.g., Uno, Pro, Pro Mini, etc.): pins 3, 9, 10
  • ArduTouch: pin 9
  • ATmega1280-based Arduinos (e.g., Mega): pins 44, 45, 46
  • Arduino Leonardo: pin 5
  • Arduino Due: pins DAC0 or DAC1
  • Teensy 3.2: pin A14
  • Teensy 3.5, 3.6: pins A21, A22
  • Teensy LC: pin A12
  • ESP8266: pins 0 to 16 (with analogWrite())
  • ESP32: DAC1 or DAC2 (pins 25 or 26)


alt tag

Component choices in this circuit aren't very critical:

  • 22k (vs 27k) and 47n (vs 10n) parts in the input low-pass filter
  • 100n (vs 10u) bypass capacitor between pin 7 and gnd
  • Used the inverting input instead of the non-inverting one (although in this circuit I noticed no difference)
  • 47n (vs 100n) output snubber capacitor


  • original implementation by Clive Webster in Webbotlib
  • ported to Arduino by Gabriel Petrut
  • Stephen Crane modified it to use pins other than pin 10 with the help of this tutorial
  • manitou48 added support for Leonardo and ARM processors with DAC (Teensy, Due)

See Also

You can’t perform that action at this time.