Skip to content

Commit 1564c70

Browse files
geekwenjiegitee-org
authored andcommitted
!10 修复tts问题
Merge pull request !10 from Poal/dev
2 parents de2f577 + 9d741f3 commit 1564c70

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

speech/src/main/java/cn/smartjavaai/speech/tts/model/SherpaTtsModel.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ private GeneratedAudio generateCore(String text, TtsParams params) {
8181
}
8282
}
8383
try {
84-
int sid = 100;
84+
int sid = 0;
8585
float speed = 1.0f;
8686
if(params != null){
87-
sid = sherpaTtsParams.getSpeakerId() > 0 ? sherpaTtsParams.getSpeakerId() : 100;
87+
sid = sherpaTtsParams.getSpeakerId();
8888
speed = sherpaTtsParams.getSpeed() > 0.0f ? sherpaTtsParams.getSpeed() : 1.0f;
8989
}
9090
GeneratedAudio audio = null;
@@ -104,7 +104,7 @@ private GeneratedAudio generateCore(String text, TtsParams params) {
104104
@Override
105105
public R<Audio> generate(String text, TtsParams params) {
106106
GeneratedAudio audio = generateCore(text, params);
107-
return R.ok(new Audio(audio.getSamples()));
107+
return R.ok(new Audio(audio.getSamples(), audio.getSampleRate(), 1));
108108
}
109109

110110
@Override

speech/src/main/java/cn/smartjavaai/speech/utils/AudioUtils.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,30 @@ public static void saveToWav(float[] floats, String savePath) throws IOException
238238
}
239239
}
240240

241+
/**
242+
* 将 float[] 音频数据保存为 WAV 文件
243+
*/
244+
public static void saveToWav(Audio audio, String savePath) throws IOException {
245+
AudioFormat audioFormat = new AudioFormat(
246+
AudioFormat.Encoding.PCM_SIGNED,
247+
audio.getSampleRate(),
248+
16,
249+
1,
250+
2,
251+
audio.getSampleRate(),
252+
false
253+
);
254+
// 1. 转换为 16-bit PCM
255+
byte[] bytes = floatsToPCM16(audio.getData());
256+
// 2. 使用 ByteArrayInputStream 封装为音频流
257+
try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
258+
AudioInputStream ais = new AudioInputStream(bais, audioFormat, audio.getData().length)) {
259+
// 3. 保存到本地文件
260+
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(savePath));
261+
}
262+
}
263+
264+
241265
public static AudioFormat getDefaultAudioFormat(){
242266
return new AudioFormat(
243267
AudioFormat.Encoding.PCM_SIGNED,

0 commit comments

Comments
 (0)