Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions common/changes/@coze/api/fix-speech_2025-03-12-13-51.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"changes": [
{
"packageName": "@coze/api",
"comment": "fix speech bug",
"type": "patch"
}
],
"packageName": "@coze/api",
"email": "[email protected]"
}
35 changes: 20 additions & 15 deletions examples/coze-js-web/src/pages/chat-x/use-ws-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,34 +306,39 @@ const useWsAPI = (
return;
}

const client = new WsSpeechClient({
token: config.getPat(),
baseWsURL: config.getBaseWsUrl(),
allowPersonalAccessTokenInBrowser: true,
});
if (!speechClientRef.current) {
const client = new WsSpeechClient({
token: config.getPat(),
baseWsURL: config.getBaseWsUrl(),
allowPersonalAccessTokenInBrowser: true,
});

client.on('data', data => {
console.log('[speech] ws data', data);
});
client.on('data', data => {
console.log('[speech] ws data', data);
});

client.on(WebsocketsEventType.ERROR, data => {
console.error('[speech] ws error', data);
});
client.on(WebsocketsEventType.ERROR, data => {
console.error('[speech] ws error', data);
});
client.on('completed', () => {
console.log('[speech] speech completed');
});
speechClientRef.current = client;
}

try {
await client.connect();
await speechClientRef.current?.connect();
console.log('[speech] ws connect success');
} catch (error) {
console.error('[speech] ws connect error', error);
return;
}

client.appendAndComplete(message);
speechClientRef.current = client;
speechClientRef.current?.appendAndComplete(message);
}, []);

const stopSpeech = () => {
speechClientRef.current?.interrupt();
speechClientRef.current?.disconnect();
};

const getIsSpeech = () => speechClientRef.current?.isPlaying();
Expand Down
10 changes: 6 additions & 4 deletions packages/coze-js/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,13 +215,11 @@ try {
}

// Send message and play
client.appendAndComplete(message);
client.appendAndComplete('Hello, Coze!');

// Interrupt
client.interrupt();

// Disconnect, destroy instance
client.disconnect();

// Pause speech playback
client.pause();
Expand All @@ -235,8 +233,12 @@ client.togglePlay();
// Check if speech is playing
client.isPlaying();

// Disconnect, destroy instance
client.disconnect();

// Send text fragment
client.append(message);
client.append('Hello,');
client.append(' Coze!');
// End sending text
client.complete();

Expand Down
10 changes: 6 additions & 4 deletions packages/coze-js/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,13 +214,11 @@ try {
}

// 发送消息并播放
client.appendAndComplete(message);
client.appendAndComplete('你好,Coze!');

// 打断
client.interrupt();

// 断开连接,销毁实例
client.disconnect();

// 暂停语音播放
client.pause();
Expand All @@ -234,8 +232,12 @@ client.togglePlay();
// 语音是否播放中
client.isPlaying();

// 断开连接,销毁实例
client.disconnect();

// 发送文本片段
client.append(message);
client.append('你好,');
client.append(' Coze!');
// 结束发送文本
client.complete();
```
Expand Down
2 changes: 1 addition & 1 deletion packages/coze-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@coze/api",
"version": "1.1.0-beta.2",
"version": "1.1.0-beta.3",
"description": "Official Coze Node.js SDK for seamless AI integration into your applications | 扣子官方 Node.js SDK,助您轻松集成 AI 能力到应用中",
"keywords": [
"coze",
Expand Down
6 changes: 4 additions & 2 deletions packages/coze-js/src/ws-tools/speech/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,10 @@ class WsSpeechClient {
}

async disconnect() {
await this.interrupt();
this.listeners.clear();
if (this.playbackTimeout) {
clearTimeout(this.playbackTimeout);
}
await this.wavStreamPlayer.interrupt();
this.closeWs();
}

Expand Down
Loading