文本转语音字符串或变量值(PicoTTS)

时间:2016-06-17 17:51:27

标签: c++ linux audio text-to-speech pico

我正在研究Text-To-Speech并尝试生成音频文件。我目前正在研究Linux上的PicoTTS(Raspberry Pi)。 以下命令:

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

以上代码确实可以播放"大家好"。但我想播放存储在string,wstring(读取变量)中的内容。

我试过

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

它播放buf而不是存储在buf中的值。 有人可以对此有所了解或建议我使用Pico以外的TTS接受字符串值。如果它能发挥价值,对我来说将是一个很大的帮助。 我正在使用Raspberry Pi 2并使用C ++。

2 个答案:

答案 0 :(得分: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 :(得分:0)

我认为可行(警告:代码未经测试)

// 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());