Skip to content

Commit

Permalink
✨ feat: update MicrosoftSpeech api
Browse files Browse the repository at this point in the history
  • Loading branch information
arvinxx committed Nov 17, 2023
1 parent d735a60 commit 105e2d0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 17 deletions.
40 changes: 26 additions & 14 deletions docs/api/edge-speech-tts.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,20 @@ title: EdgeSpeechTTS

`EdgeSpeechTTS` 类是一个用于将文本转换为语音的工具,它可以在边缘运行时环境中使用。该类提供了一系列方法来获取语音选项,创建语音合成请求,并处理返回的音频数据。

### 示例
### 参数

以下是使用 `EdgeSpeechTTS` 类的示例代码:
- `options`: 对象,可选。
- `backendUrl`: 字符串,指定后端服务的 URL。如果提供,将使用此 URL 发送请求。
- `locale`: 字符串,指定要使用的语音区域设置。如果提供,将用于过滤可用语音列表。

Node 环境:
### 示例

使用 Bun 直接运行 `EdgeSpeechTTS`

```js
// bun index.js
import { EdgeSpeechTTS } from '@lobehub/tts';
import { Buffer } from 'buffer';
import fs from 'fs';
import path from 'path';

Expand All @@ -25,27 +31,33 @@ const tts = new EdgeSpeechTTS({ locale: 'zh-CN' });

// 创建语音合成请求负载
const payload = {
text: '这是一段语音演示',
voice: 'zh-CN-XiaoxiaoNeural',
input: '这是一段语音演示',
options: {
voice: 'zh-CN-XiaoxiaoNeural',
},
};

const speechFile = path.resolve('./speech.mp3');

// 调用 create 方法来合成语音
async function main() {
const mp3Buffer = await tts.create(payload);
await fs.writeFileSync(speechFile, mp3Buffer);
}
const response = await tts.create(payload);
const mp3Buffer = Buffer.from(await response.arrayBuffer());

main();
fs.writeFileSync(speechFile, mp3Buffer);
```

在此示例中,首先实例化了 `EdgeSpeechTTS` 类,并指定了后端服务的 URL 和语音区域设置。然后创建了一个包含文本和语音选项的请求负载。最后,通过调用 `create` 方法并传入负载来合成语音。如果合成成功,将返回一个包含音频数据的 `AudioBuffer` 对象。如果出现错误,将捕获并处理。

## 参数
在 Node.js 中运行

- `options`: 对象,可选。
- `backendUrl`: 字符串,指定后端服务的 URL。如果提供,将使用此 URL 发送请求。
- `locale`: 字符串,指定要使用的语音区域设置。如果提供,将用于过滤可用语音列表。
由于 Nodejs 环境缺少 `WebSocket` 实例,所以我们需要 polyfill WebSocket。通过引入 ws 包即可。

```js
// 在文件顶部引入
import WebSocket from 'ws';

global.WebSocket = WebSocket;
```

## 属性

Expand Down
8 changes: 6 additions & 2 deletions src/core/MicrosoftSpeechTTS/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,12 @@ export class MicrosoftSpeechTTS {
return response;
};

create = async (payload: MicrosoftSpeechPayload): Promise<AudioBuffer> => {
const response = await this.fetch(payload);
create = async (payload: MicrosoftSpeechPayload): Promise<Response> => {
return await this.fetch(payload);
};

createAudio = async (payload: MicrosoftSpeechPayload): Promise<AudioBuffer> => {
const response = await this.create(payload);

const arrayBuffer = await response.arrayBuffer();

Expand Down
2 changes: 1 addition & 1 deletion src/react/useMicrosoftSpeech/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export const useMicrosoftSpeech = (defaultText: string, config: MicrosoftSpeechO
text,
(segmentText: string) => {
const instance = new MicrosoftSpeechTTS({ ...api, locale });
return instance.create({ input: segmentText, options });
return instance.createAudio({ input: segmentText, options });
},
swrConfig,
);
Expand Down

0 comments on commit 105e2d0

Please sign in to comment.