---
title: "Using an Arduino and the Emic 2 TTS Module to Read Tweets"
url: "https://maker.wiznet.io/WIZnet/projects/using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/"
markdown_url: "https://maker.wiznet.io/WIZnet/projects/using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/md"
type: "UCC: User Created Content"
author: "Dan Malec"
author_url: "https://blog.adafruit.com/2012/08/16/how-to-using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Dan Malec"
original_url: "https://blog.adafruit.com/2012/08/16/how-to-using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/"
published: "2023-04-03"
language: "en"
hardware: ["Arduino Ethernet Shield"]
likes: 0
views: 160
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Using an Arduino and the Emic 2 TTS Module to Read Tweets

> The gutenbird sketch from the Internet of Things Printer served as a good starting point as it already had the ability to parse the JSON fee

Original author: Dan Malec (source: https://blog.adafruit.com/2012/08/16/how-to-using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/)

## Components

- **Arduino Ethernet Shield** x 1 ([docs](https://docs.arduino.cc/retired/shields/arduino-ethernet-shield-without-poe-module))

## Article

**DETAILS**

![](https://i.ytimg.com/vi/8hbsIuWYiWM/hqdefault.jpg)

After playing around with the Emic 2 text to speech module, I decided to try having it read tweets. The gutenbird sketch from the [Internet of Things Printer](https://www.adafruit.com/products/717) served as a good starting point as it already had the ability to parse the JSON feed from Twitter and output the content via a serial port.

Hardware used :

- [Emic 2 TTS Module](https://www.adafruit.com/products/924)

- [Arduino Ethernet](https://www.adafruit.com/products/418)

Connecting the Emic 2 to the Arduino is very straightforward, requiring only four wires:

![](https://maker.wiznet.io/uploads/2019/04/Social_Chatter_Schematic-300x169.png)

While working with the Emic 2, I wrote a small wrapper class to handle the various commands. This is used at the beginning of the sketch to configure the voice parameters and later on to speak the text:

*emic2TtsModule.init();*
*emic2TtsModule.setVolume(5);*
*emic2TtsModule.setWordsPerMinute(120);*
*emic2TtsModule.setVoice(BeautifulBetty);*
*…*
*emic2TtsModule.say(fromUser);*
*emic2TtsModule.say(F(” tweeted “));*
*emic2TtsModule.say(msgText);*

The Social Chatter sketch diverges a bit from the original gutenbird sketch by explicitly expanding certain characters to words to control how the Emic vocalizes them. For example, the following code causes the # sign to be spoken as “hash” instead of “number sign”:

*if (c == ‘#’) {*
* len = writeStringIfPossible(len, maxLen, dest, ” hash “);*
*}*

During development, I noticed that having the Emic 2 read URLs was not particularly helpful. There is a simple state machine to detect links and replace them with the work “link” in the spoken output:

*if (state == STATE_NORMAL) {*
* if (c == ‘h’) {*
* state = STATE_LINK_H;*
* …*
* }*
*} else if (state == STATE_LINK_H) {*
* if (c == ‘t’) {*
* state = STATE_LINK_HT;*
* } else {*
* state = STATE_LINK_FALSE_POSITIVE;*
* }*
* …*
*}*

The full source is [available on GitHub](https://github.com/dmalec/SocialChatter). How will you use the Emic 2 to give a voice to the Internet of Things?

---

Source: https://maker.wiznet.io/WIZnet/projects/using-an-arduino-and-the-emic-2-tts-module-to-read-tweets/
