Попытка использовать Piper TTS на вершине ESPEAK-NG из C ++ Бросая исключение времени выполнения «Не удалось установить C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Попытка использовать Piper TTS на вершине ESPEAK-NG из C ++ Бросая исключение времени выполнения «Не удалось установить

Сообщение Anonymous »

Я искал библиотеку с открытым исходным кодом, которая могла читать слова на разных языках и выполнять текст на речь (TTS) с хорошим качеством. Цель - это то, что будет работать без облака на относительно небольших процессорах, таких как сотовый телефон или Raspberry Pi. Это выглядело так, как будто Pipertts выполняет эту роль довольно хорошо. У него огромная библиотека голосов, которые прошли обучение на многих языках. Я обнаружил, что на моей машине Linux мне пришлось подчиняться паплию, потому что по умолчанию использовалась ALSA. < /P>
espeak "testing yo ho ho and a bottle of rum" --stdout | paplay
< /code>
Приведенная выше команда звучит очень «машина», но espeak-ng способен доставлять практически любой звук на любом языке с фонетическими символами. Библиотека Pipertts работает над слоем над этим и отображает язык с фонемами, которые затем отправляются в базовую espeak-ng. Piper-model ../../voices/en/en_us-amy-medium.onnx> Предполагая, что у вас есть файл onnx goice и json. Это репо является чтениями, не оказалось хорошо поддерживаемой, но он используется в очень поддерживаемом https://github.com/ohf-voice/piper1-gpl
мой код показан ниже. сбое? Я попробовал: < /p>
eSpeakConfig.voice = "en";
eSpeakConfig.voice = "en-us";
< /code>
Оба терпят неудачу одинаково. < /p>
g++ -g -std=c++17 -Wall -Wextra -I/usr/local/include -o tts tts.cpp -lpiper -lespeak-ng -lpiper_phonemize

Read 227 characters from dict.txt
terminate called after throwing an instance of 'std::runtime_error'
what(): Failed to set eSpeak-ng voice
Aborted (core dumped)
< /code>
Вот код: < /p>
#include
#include
#include // Added for file reading
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

string read_dictionary(const char filename[]) {
ifstream file(filename);
file.seekg(0, ios::end);
size_t size = file.tellg();
file.seekg(0, ios::beg);
string words;
words.resize(size);
file.read(&words[0], size);
return words;
}

int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s \n", argv[0]);
return 1;
}

string words = read_dictionary(argv[1]);
cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»