Skip to content

Commit 56ab182

Browse files
committed
fix:修复音乐播放功能
1 parent f46db7e commit 56ab182

File tree

4 files changed

+221
-276
lines changed

4 files changed

+221
-276
lines changed

src/main/java/com/xiaozhi/dialogue/llm/tool/function/PlayMusicFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class PlayMusicFunction implements ToolsGlobalRegistry.GlobalFunction {
3232
return "音乐播放失败";
3333
}else{
3434
musicService.playMusic(chatSession, songName, null);
35-
return "尝试播放歌曲"+songName;
35+
return "尝试播放歌曲"+songName+"》";
3636
}
3737
}catch (Exception e){
3838
logger.error("device 音乐播放异常,song name: {}", songName, e);

src/main/java/com/xiaozhi/dialogue/service/AudioService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ public CompletableFuture<Void> sendStop(ChatSession session) {
8787
String sessionId = session.getSessionId();
8888

8989
try {
90+
91+
// 如果在播放音乐,则不停止
92+
if (sessionManager.isMusicPlaying(sessionId)) {
93+
return CompletableFuture.completedFuture(null);
94+
}
95+
9096
// 标记播放结束
9197
AtomicBoolean playingState = isPlaying.computeIfAbsent(sessionId, k -> new AtomicBoolean());
9298
playingState.set(false);
@@ -308,7 +314,7 @@ public void sendOpusFrame(ChatSession session, byte[] opusFrame) throws IOExcept
308314
/**
309315
* 取消调度任务
310316
*/
311-
private void cancelScheduledTask(String sessionId) {
317+
public void cancelScheduledTask(String sessionId) {
312318
ScheduledFuture<?> task = scheduledTasks.remove(sessionId);
313319
if (task != null && !task.isDone()) {
314320
task.cancel(false);

src/main/java/com/xiaozhi/dialogue/service/DialogueService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public class DialogueService {
5656
@Resource
5757
private MessageService messageService;
5858

59+
@Resource
60+
private MusicService musicService;
61+
5962
@Resource
6063
private VadService vadService;
6164

@@ -896,6 +899,10 @@ public void abortDialogue(ChatSession session, String reason) {
896899
sessionManager.closeAudioStream(sessionId);
897900
sessionManager.setStreamingState(sessionId, false);
898901

902+
if (sessionManager.isMusicPlaying(sessionId)) {
903+
musicService.stopMusic(sessionId);
904+
return;
905+
}
899906
// 清空句子队列
900907
CopyOnWriteArrayList<Sentence> queue = sentenceQueue.get(sessionId);
901908
if (queue != null) {

0 commit comments

Comments
 (0)