Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Piper TTS Support #3

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Piper TTS Support #3

wants to merge 10 commits into from

Conversation

zqlk256
Copy link

@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
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