【发布时间】:2017-07-08 05:17:24
【问题描述】:
我正在处理一个使用 rita 和 ttslib 库生成语音的处理草图(rita 用于生成马尔可夫文本链,而 ttslib 正在将该文本转换为语音)。
我似乎不知道如何将语音作为音频文件保存到我的电脑中。这是我当前的代码:
import ddf.minim.*;
import rita.*;
import guru.ttslib.*;
Minim minim;
AudioOutput out;
AudioRecorder recorder;
TTS voice1, voice2, voice3;
RiMarkov rm;
String[] sourceTextArray, script;
String title, sourceText;
int targetScriptLength;
void setup() {
noLoop();
minim = new Minim(this);
out = minim.getLineOut();
recorder = minim.createRecorder(out, "recording.wav");
System.setProperty("mbrola.base","C:\\Users\\kandr\\Desktop\\Dropbox\\Coding & Web Design\\Processing 3\\libraries\\mbrola\\");
}
void draw() {
generateScript("https://en.wikipedia.org/wiki/Special:Random");
prepareVoices();
recorder.beginRecord();
speakScript(script);
recorder.endRecord();
recorder.save();
}
void prepareVoices() {
voice1 = new TTS("mbrola_us1");
voice1.setPitch(180.0);
voice1.setPitchRange(25.0);
voice2 = new TTS("mbrola_us3");
voice2.setPitch(120.0);
voice2.setPitchRange(15.0);
voice3 = new TTS("mbrola_us3");
voice3.setPitch(0.0);
}
void generateScript(String sourceURL) {
sourceTextArray = loadStrings(sourceURL);
sourceText = join(sourceTextArray, " ");
// find random article's title
title = sourceText.substring(sourceText.indexOf("<h1 id=\"firstHeading\" class=\"firstHeading\" lang=\"en\">") + 53, sourceText.indexOf("</h1>"));
title = title.replaceAll("<.*?>", "");
// load the source text into our Markov generator
rm = new RiMarkov(3);
rm.loadText(sourceText);
// set the target script size and instantiate an array to hold the lines
targetScriptLength = 20;
script = new String[targetScriptLength];
// generate lines to populate the script
for (int l = 0; l < targetScriptLength; l++) {
script[l] = rm.generateSentence();
}
}
void speakScript(String[] scriptArr) {
for (int s = 0; s < scriptArr.length; s+=2) {
voice1.speak(scriptArr[s]);
voice2.speak(scriptArr[s+1]);
}
}
如您所见,我尝试使用 Minim 库的 AudioRecorder 类来录制我的草图输出的音频。但是,没有记录实际的音频——我只是得到一个空的 wav 文件。我还尝试将 AudioRecorder 对象的可录制源设置为 AudioInput,但这只是录制了笔记本电脑麦克风的声音。
我还查看了 Processing 附带的 Sound 库,但没有在其中找到适合录制音频的类。
谁能指出我正确的方向,以弄清楚如何让我的草图记录它通过 ttslib 生成的音频?
【问题讨论】:
-
Stack Overflow 并不是真正为一般的“我该怎么做”类型的问题而设计的。这是针对更具体的“我尝试了 X,预期 Y,但得到了 Z”类型的问题。你需要分解你的问题,并发布一个Minimal, Complete and Verifiable Example,只需要几行可运行的代码。你问的问题太笼统了。因此,请尝试编辑问题,以便:询问您想要做什么,展示您之前如何尝试但没有成功,并展示您尝试失败的结果。
-
好的,抱歉。我尝试在上面添加一些更有用的信息,包括我当前的代码。
-
即使代码仍然无法运行,我尝试在下面回复。
标签: processing text-to-speech audio-recording