我正在.wav使用marytts 创建文件。
.wav文件的kpb 根据我在以下代码中使用的声音而变化。我想以128 kpbs的速度写入每个音频文件。
由于我打算使用该程序.wav,因此仅使用128 kpbs 生成的文件,有没有办法.wav始终将文件写入128kpbs?
这是我的代码:
AudioInputStream audio = marytts.generateAudio(text); //generate audio from text
AudioSystem.write(audio, AudioFileFormat.Type.WAVE, new File("F:\\temp\\" + filename + ".wav"));//save audio as .wav to the static location with filename
return true;//function completed so return true
Run Code Online (Sandbox Code Playgroud)
我设法找到问题的答案。
也许以后有人也问同样的问题,所以我给出了解决方案。
在课堂上,我想编写wav时编写了这些全局变量
static AudioFormat.Encoding defaultEncoding = AudioFormat.Encoding.PCM_SIGNED;
static float fDefaultSampleRate = 8000;
static int nDefaultSampleSizeInBits = 16;
static int nDefaultChannels = 1;
static int frameSize = 2;
static float frameRate= 8000;
static boolean bDefaultBigEndian = false;
Run Code Online (Sandbox Code Playgroud)
并像这样更改我的代码。
我可以根据需要创建一种格式,从文本生成音频,更改音频格式并编写。
AudioFormat defaultFormat = new AudioFormat(defaultEncoding,fDefaultSampleRate,nDefaultSampleSizeInBits,nDefaultChannels,frameSize,frameRate,bDefaultBigEndian);
AudioInputStream GeneratedAudio = marytts.generateAudio(text); //generate audio from text
AudioInputStream audio = AudioSystem.getAudioInputStream(defaultFormat, GeneratedAudio);
AudioSystem.write(audio, AudioFileFormat.Type.WAVE, new File("F:\\temp\\" + filename + ".wav"));//save audio as .wav to the static location with filename
return true;//function completed so return true
Run Code Online (Sandbox Code Playgroud)