• Stars
    star
    302
  • Rank 137,237 (Top 3 %)
  • Language
    C
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Speech synthesis for ESP8266 using S.A.M. port

ESP8266SAM

Speech synthesis for ESP8266 and ESP-32 using ported SAM code

This is a port, wrapper, and update of the reverse-engineered speech synthesizer Software Automatic Mouth (SAM). Utilize it with the ESP8266Audio library to have your ESP speak via a DAC or a direct-drive speaker. No web services are required, everything from text parsing to speech generation is done directly on the ESP.

Original sources

This version has been reworked to generate full 8-bit speech formants as well as proper time-series waveforms.

Usage

You will need:

  1. The ESP8266Audio library installed in your Arduino/libraries folder ( git clone https://github.com/earlephilhower/ESP8266Audio )
  2. An audio output device compatible with ESP8266Audio. There are two described in its readme, and either the DAC or 1-transistor amplifier will work fine.

Then in your code instantiate an AudioOutput object, ->begin() it, and then simply create the SAM object and call Say().

About SAM

SAM is a very basic speech synthesizer originally developed in 1979 and ported to the Commodore 64. It was designed to run on very low memory 8-bit processors, and as such is a great for the ESP8266 with it's limited RAM.

The quality of speech isn't phenomenal. To paraphrase Samuel Johnson, "It is not done well; but you are surprised to find it done at all." The same could be said of the decompiled, disassembled, C-translated source code.

Output is fixed at 22050Hz due to some hardcoded delays to help match C64 internal timing parameters.

The voice is formant generated and can be modified by setting things such as speed, pitch, mouth and throat configuration, and even sending in phonetic codes instead of English text. See @s-macke's repository for more information.

Cool uses of SAM

Jan Derogee has used ESP8266SAM to build a complete VIC-20 compatible speech synthesis cartridge that works with BASIC applications. It also has a great background on early speech synthesis and a neat construction and demo video. Check it out at https://janderogee.com/projects/SerialSpeechSynthesisSAM/SerialSpeechSynthesisSAM.htm

License

While the ESP8266 wrapper is my own, the SAM software is a reverse-engineered version of a software published more than 34 years ago by "Don't ask Software".

The company no longer exists. Any attempt to contact the original authors failed. Hence S.A.M. can be best described as Abandonware (http://en.wikipedia.org/wiki/Abandonware)

As long this is the case I cannot put my code under any specific open source software license. However the software might be used under the "Fair Use" act (https://en.wikipedia.org/wiki/FAIR_USE_Act) in the USA.

More Repositories

1

ESP8266Audio

Arduino library to play MOD, WAV, FLAC, MIDI, RTTTL, MP3, and AAC files on I2S DACs or with a software emulated delta-sigma DAC on the ESP8266 and ESP32
C
1,986
star
2

arduino-pico

Raspberry Pi Pico Arduino core, for all RP2040 boards
C
1,886
star
3

ezfio

Simple NVME/SAS/SATA SSD test framework for Linux and Windows
Python
161
star
4

mklittlefs

Utility for creating LittleFS images for upload on the ESP8266 and RP2040 Pico
C++
144
star
5

arduino-esp8266littlefs-plugin

Plugin to upload LittleFS filesystems to ESP8266
Java
121
star
6

arduino-littlefs-upload

Build and uploads LittleFS filesystems for the Arduino-Pico RP2040, ESP8266, and ESP32 cores under Arduino IDE 2.2.1 or higher
TypeScript
99
star
7

bearssl-esp8266

Port of https://bearssl.org BearSSL to ESP8266
C
47
star
8

psychoclock

ESP8266 alarm clock with 8x32 LED display, NTP time, and MOD/WAV music alarms
Objective-C
41
star
9

pico-quick-toolchain

GCC Cross-compiler chain for Raspberry Pi Pico
Makefile
32
star
10

arduino-pico-littlefs-plugin

LittleFS Data Uploader for Arduino-Pico
Java
28
star
11

psychoplug

ESP8266 power outlet replacement firmware with standalone HTTP scheduler and MQTT integration
C++
27
star
12

aquaweb

Control Jandy Aqualink via a web interface
Python
20
star
13

ESP8266AudioMP3

Port of Helix MP3 code to ESP8266
C
11
star
14

libmad-8266

Port of libmad to ESP-8266 Arduino IDE - for historical purposes only, see ESP8266Audio for updated versions
C++
9
star
15

ESP8266FastROMFS

Higher-speed filesystem to replace SPIFFS in apps not needing all SPIFFs assurances.
C++
9
star
16

SPIFTL

Embedded, Static Wear-Leveling FTL Library for Microcontrollers
C++
6
star
17

ESP8266WavetableSynth

Obsolete, please use ESP8266Audio - TinySoundFont + MidiTones based MIDI player using SoundFont2 patch sets.
C
1
star
18

eggplotter

Based off of https://www.thingiverse.com/thing:3564057 Egg Plotter
C++
1
star