Я работаю над 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 ++.
Вам нужно объединить строку перед вызовом системы, а затем использовать эту сцепленную строку для системного вызова. Это будет выглядеть примерно так
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 + "\"";
Я полагаю, может работать (осторожно: код не проверен)
// 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());