Skip to content

Piper TTS Support#3

Open
zqlk256 wants to merge 19 commits intommpneo:masterfrom
zqlk256:master
Open

Piper TTS Support#3
zqlk256 wants to merge 19 commits intommpneo:masterfrom
zqlk256:master

Conversation

@zqlk256
Copy link
Copy Markdown

@zqlk256 zqlk256 commented Sep 29, 2024

Summary

I added Piper as a new TTS provider.

Motivation

A twitch streamer I watch is using Curses as part of their speech-to-text-to-speech setup. Until now they were using an Azure TTS voice, but they're unhappy with a recent update and now want to switch to a TTS setup they have more control over. Piper is open source, runs locally, and most voice files are CC-licensed, so it seems ideal.

They asked their community for help with integrating Piper into Curses and I volunteered.

Changes Made

UI

I added a new TTS service "Piper" complete with settings:

pull-request

The user must specify the path of piper.exe as well as the directory containing the voice files.
To this end I added an InputFilePath component, essentially a text input with a button that opens a file dialog.

Backend

The new module services::piper_tts exposes two functions:

  • get_voices to scan a directory for Piper voice files
  • speak to speak some text out loud

When invoking piper.exe I need to provide it with a file path for the generated .wav file.
I added a dependency on the tempfile crate to handle this.

Translations

I added a few items to the tts section of the translation files.
I don't speak Chinese, so I just copied the en strings to zh_cn and zh_tw.
You'll want to replace these with proper translations.

The error messages produced by the rust module are all in English as well.

@tianmiao8152
Copy link
Copy Markdown
Contributor

This is really amazing. I will complete the Chinese translation work in the future

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants