Processing 如何保存使用ttslib的处理草图生成的音频?

Processing 如何保存使用ttslib的处理草图生成的音频?,processing,text-to-speech,audio-recording,Processing,Text To Speech,Audio Recording,我正在制作一个处理草图,该草图使用rita和ttslib库生成语音(rita用于生成马尔可夫文本链,ttslib将该文本转换为语音) 我似乎不知道如何将该演讲保存为音频文件到我的电脑。以下是我当前的代码: 导入ddf.minim.*; 进口丽塔。*; 导入guru.ttslib.*; 极小极小; 音频输出; 录音机; TTS语音1、语音2、语音3; 里马尔科夫rm; 字符串[]sourceTextArray,脚本; 字符串标题,源文本; int targetScriptLength; 无效设置(

我正在制作一个处理草图,该草图使用rita和ttslib库生成语音(rita用于生成马尔可夫文本链,ttslib将该文本转换为语音)

我似乎不知道如何将该演讲保存为音频文件到我的电脑。以下是我当前的代码:

导入ddf.minim.*;
进口丽塔。*;
导入guru.ttslib.*;
极小极小;
音频输出;
录音机;
TTS语音1、语音2、语音3;
里马尔科夫rm;
字符串[]sourceTextArray,脚本;
字符串标题,源文本;
int targetScriptLength;
无效设置(){
noLoop();
最小值=新的最小值(本);
out=minim.getLineOut();
记录器=最小创建记录器(输出,“recording.wav”);
System.setProperty(“mbrola.base”,“C:\\Users\\kandr\\Desktop\\Dropbox\\Coding&Web Design\\Processing 3\\libraries\\mbrola\”;
}
作废提款(){
生成脚本(“https://en.wikipedia.org/wiki/Special:Random");
prepareVoices();
recorder.beginRecord();
演讲稿(脚本);
recorder.endRecord();
recorder.save();
}
无效准备费(){
voice1=新的TTS(“mbrola_us1”);
语音1.设定音高(180.0);
voice1.设置俯仰范围(25.0);
voice2=新的TTS(“mbrola_us3”);
voice2.设定音高(120.0);
voice2.设置俯仰范围(15.0);
voice3=新的TTS(“mbrola_us3”);
voice3.设定音高(0.0);
}
void generateScript(字符串sourceURL){
sourceTextArray=LoadString(sourceURL);
sourceText=join(sourceTextArray,“”);
//查找随机文章的标题
title=sourceText.substring(sourceText.indexOf(“”+53,sourceText.indexOf(“”));
title=title.replaceAll(“,”);
//将源文本加载到马尔可夫生成器中
rm=新里马尔科夫(3);
rm.loadText(源文本);
//设置目标脚本大小并实例化一个数组以容纳行
targetScriptLength=20;
脚本=新字符串[targetScriptLength];
//生成用于填充脚本的行
对于(int l=0;l
如您所见,我尝试过使用Minim库的AudioRecorder类来录制草图输出的音频。然而,没有实际的音频被记录-我只是以一个空的wav文件结束。我还尝试将AudioRecorder对象可录制源设置为音频输入,但这只是从笔记本电脑的麦克风录制的声音

我还查看了随处理一起提供的声音库,但没有找到适合录制音频的类


有谁能给我指出正确的方向,让我知道如何让我的草图记录它通过ttslib生成的音频吗?

首先,即使你编辑了问题,你发布的代码仍然需要额外的文件,因此无法测试

无论如何,问题似乎在于Minim的API,因此音频路由需要从草图外部完成。因为您使用的是windows,所以只需将录音设备更改为“立体声混音”即可。这会将系统的音频输出重新路由到输入端,从而可由minim记录

下面是我使用和改编的一个小草图,它记录了ttslib库生成的语音。如果音频从系统设置中重新路由

导入ddf.minim.*;
进口ddf.minim.ugens.*;
导入guru.ttslib.*;
极小极小;
TTS-TTS;
音频输入;
录音机;
布尔记录;
音频输出;
文件播放器;
无效设置()
{
大小(512,200,P3D);
tts=新的tts();
最小值=新的最小值(本);
in=最小值。getLineIn();
记录器=最小创建记录器(在“test.wav”中为真);
out=最小getLineOut(最小立体声);
textFont(createFont(“Arial”,12));
}
作废提款()
{
背景(0);
中风(255);
对于(int i=0;i
Stack Overflow并不是为一般的“我该怎么做”类型的问题而设计的。这是针对更具体的“我尝试了X,期望是Y,但得到了Z”类型的问题。您需要将您的问题分解,并发布一篇只包含几行可运行代码的文章。你问的问题太宽泛了。因此,试着编辑这个问题,以便:询问你想做什么,展示你以前如何尝试去做却没有成功,并展示你失败尝试的结果。好的,对不起。我尝试在上面添加一些更有用的信息,包括我当前的代码。即使代码仍然无法运行,我也尝试在下面回复。感谢您的关注。我将上述代码保存为新草图。当我运行它时,它只录制麦克风的声音,而不是声音。我遗漏了什么吗?您是否将系统设置更改为用作录音设备“立体声混音”而不是内置麦克风?对于系统设置,我指的是操作系统的设置,而不是处理。啊,好的。是的,这解决了问题。谢谢