我正在研究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 ++。
答案 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());