DEV Community

Cover image for Speech Synthesis in JavaScript
Nikita Dmitriev
Nikita Dmitriev

Posted on • Edited on

3 1

Speech Synthesis in JavaScript

Backstory

Hi. I want to develop my personal assistant. I needed to implement speech synthesis. I had two ways:

  1. Use online speech synthesis like googleTTS
  2. Use offline npm modules and my system

So, I chose the second one.

And, here I’ll tell you everything about my adventure and how to use speech synthesis on your device using node.js

New era

I decided to use Say.js but the repository is abandoned by the author, and I needed to set “UTF-8” encoding for my voice. Originally I wanted to create a fork for Say.js module, but more convenient was to create my own module (I renamed variables, added encodings and created convenient documentation README). So, I developed my module based on Say.js named “speakertts”. If you want to contribute follow github

How it works

This module uses node.js module “child-process” to call powershell and execute built-in SpeechSynthesizer object (I talk about windows). You can use your powershell and paste this code:

Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
$speak.Speak('Hello...')
Enter fullscreen mode Exit fullscreen mode

You can read more here

How to use

  1. Install speakertts module

    npm i speakertts
    
  2. Get your voices using getInstalledVoices() function

    const speaker = require('speakertts')
    
    speaker.getInstalledVoices((error, voices) => {
        if (error) {
            console.error('Error:', error);
        } else {
            console.log('Installed voices:', voices);
        }
    });
    
  3. Call SpeechSynthesizer using speak function

    speaker.speak('Hello, world', 'Your voice', 1, 'ASCII', 
    (error) => {
      if (error) {
        return console.error('Error speaking!', error)
      }
    
      console.log('text to speech complete')
    })
    

It was basics, other functions you can look up on github or npm

How to set your not system voice (for windows)

You just need to install SAPI format voice, and repeat previous chapter

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (1)

Collapse
 
vulcanwm profile image
Medea

nice article!

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Retry later