Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zhouqihang/aliyun-tts-websocket
Tools to use aliyun TTS server through websocket.
https://github.com/zhouqihang/aliyun-tts-websocket
Last synced: 29 days ago
JSON representation
Tools to use aliyun TTS server through websocket.
- Host: GitHub
- URL: https://github.com/zhouqihang/aliyun-tts-websocket
- Owner: zhouqihang
- Created: 2023-06-01T00:32:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-06-04T11:26:24.000Z (over 1 year ago)
- Last Synced: 2024-11-11T17:49:29.283Z (3 months ago)
- Language: JavaScript
- Size: 33.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Aliyun-tts-websocket
This repo is developed for `aliyun` tts websocket. For more information, please see: https://help.aliyun.com/document_detail/324262.html?spm=a2c4g.324262.0.0.7dd87d63BjFUFh
English | [简体中文](./docs/zh_CN.md)
## Installation
```shell
$ npm install aliyun-tts-websocket --save
```## Usage
With webpack, vite or other build tools:
```javascript
import AliyunTtsWebSocket from 'aliyun-tts-websocket'const service = new AliyunTtsWebSocket({
ws: '', // A websocket address with your token.
ttsHeaders: {
appkey: '' // Your aliyun cloud appkey
}
})service.start()
service.stop()
```## Constructor options
| name | type | default | description |
|--------------------|-----------------------------------------------|--------------------|--------------------------------------------------------------------------|
| ws | string | '' | Websocket url. |
| mediaStreamHandler | (stream: MediaStream, send: Function) => void | null | A function which can make you change audio stream and send to websocket. |
| ttsConfig | object | tts default config | Same as the payload of `StartTranscription` directive. |
| ttsHeaders | object | tts default header | Same as the header of each directive. |### mediaStreamHandler
This function make you convert audio format by your self. `PCM` is used by default.
### Default config value
```json5
{
enable_intermediate_result: true,
enable_punctuation_prediction: true
}
```This param is used for `StartTranscription` directive's payload. For more information, see: https://help.aliyun.com/document_detail/324262.html?spm=a2c4g.324262.0.0.7dd87d63BjFUFh#sectiondiv-rz2-i36-2gv
### Default header value
```json5
{
appkey: ''
}
```This params is used for each directive. For more information, see: https://help.aliyun.com/document_detail/324262.html?spm=a2c4g.324262.0.0.7dd87d63BjFUFh#sectiondiv-mkk-cs4-5kh
Notice that only `appkey` field is required, other fields is not recommended to pass.
## Public methods
| name | description |
|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| start | Open a websocket connection, send `StartTranscription` directive to server and weakup microphone device. |
| stop | Disconnect the microphone devece and send `StopTranscription` directive to serve. The websocket connection will be closed after receive the `TranscriptionCompleted` event. |
| on | Alias of `addEventListener`. |## Events
Aliyun-tts-websocket extends `EventTarget`, you can listen events as same as DOM events.
```javascript
const service = new AliyunTtsWebSocket({
// ...
})
service.addEventListener('ws:open', function () {
// do something.
})
service.addEventListener('tts:change', function (event) {
console.log(event.detail); // get event data.
})
```| name | event data | description |
|------------|--------------------------------------------|------------------------------------------------------------------------------|
| ws:open | undefined | Will be called after websocket connected. |
| ws:message | Websocket MessageEvent | Will be called after receive websocket messages. |
| ws:close | undefined | Will be called after websocket disconnected. |
| tts:begin | same as `SentenceBegin` event | Will be called after receive `SentenceBegin` event. |
| tts:change | same as `TranscriptionResultChanged` event | Will be called after receive `TranscriptionResultChanged` event. |
| tts:end | same as `SentenceEnd` event | Will be called after receive `SentenceEnd` event. |
| tts:stop | same as `TranscriptionCompleted` event | Will be called after receive `TranscriptionCompleted` event. |
| ready | undefined | Will be called after weakup microphone device. |## Thanks
Some code is referenced from this article: https://juejin.cn/post/7028003824912564231, thanks!