Преобразование текста в речь в виде строки или переменной (PicoTTS)

Я работаю над Text-To-Speech и пытаюсь создать аудио файл. В настоящее время я работаю над PicoTTS на Linux (Raspberry Pi).
Следующая команда:

    system("pico2wave -w res.wav "Hello to all of you");
system("aplay res.wav");

Приведенный выше код играет «Привет всем вам». Но я хочу воспроизвести содержимое, хранящееся в строке, wstring (чтение переменной).

Я старался

    sprintf(buf, "Hello to all of you");
system("pico2wave -w res.wav buf);
system("aplay res.wav");

Это играло buf, а не значение, сохраненное в buf.
Может кто-то, пожалуйста, пролить свет на это или порекомендовать мне использовать TTS, отличный от Pico, который принимает строковое значение. Для меня было бы очень полезно, если бы это могло сыграть и ценность.
Я работаю над Raspberry Pi 2 и использую C ++.

1

Решение

Вам нужно объединить строку перед вызовом системы, а затем использовать эту сцепленную строку для системного вызова. Это будет выглядеть примерно так

std::string command = "pico2wave -w res.wav ";
std::string text_to_say;
// get input from user and store it into text_to_say
command += text_to_say;
// now command is pico2wave -w res.wav whatever the user entered
system(command.c_str());
system("aplay res.wav");

Если whatever the user entered должен быть заключен в кавычки, такие как "whatever the user entered" затем

command += text_to_say;

становится

command += "\"" + text_to_say + "\"";
1

Другие решения

Я полагаю, может работать (осторожно: код не проверен)

// command string
std::string cmd("pico2wave -w res.wav ");

// create the message in some way
std::string msg("Hello to all of you");

// call to system
system((cmd+"\""+msg+"\"").c_str());
0

По вопросам рекламы [email protected]