https://github.com/vv314/xiaoai-tts
小爱音箱自定义文本朗读
https://github.com/vv314/xiaoai-tts
xiaoai xiaoai-tts
Last synced: 3 months ago
JSON representation
小爱音箱自定义文本朗读
- Host: GitHub
- URL: https://github.com/vv314/xiaoai-tts
- Owner: vv314
- Created: 2019-04-29T06:24:49.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-11T02:33:44.000Z (almost 2 years ago)
- Last Synced: 2025-03-03T21:57:04.165Z (4 months ago)
- Topics: xiaoai, xiaoai-tts
- Language: JavaScript
- Homepage:
- Size: 432 KB
- Stars: 137
- Watchers: 10
- Forks: 19
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# xiaoai-tts
[](https://www.npmjs.com/package/xiaoai-tts)
小爱音箱自定义文本朗读。
> 不止是 TTS
## 安装
```bash
npm i xiaoai-tts
```## 使用
```javascript
const XiaoAi = require('xiaoai-tts')// 输入小米账户名,密码
const client = new XiaoAi('fish', '123456')// 朗读文本
client.say('你好,我是小爱')
```## API
### Class: XiaoAi
#### new XiaoAi(username, password)
- `username` `{String}` 小米账户用户名
- `password` `{String}` 账户密码使用小米账户登录小爱音箱
#### new XiaoAi(session)
- `session` `{Object}` Session 信息
- `userId` `{String}`
- `serviceToken` `{String}`使用 `Session` 登录。
使用小米账户登录后,调用 `connect()` 返回用户登录信息;
`Session` 可持久化保存,实例化 `XiaoAi` 时可直接传入:```javascript
const fs = require('fs')
let client = nulltry {
// 尝试读取本地 Session 信息
const Session = fs.readFileSync('~/xiaoai/session', { encoding: 'utf8' })// 通过 Session 登录
client = new XiaoAi(JSON.parse(Session))
} catch (e) {
client = new XiaoAi('fish', '123456')const Session = await client.connect()
// 将 Session 储存到本地
fs.writeFileSync('~/xiaoai/session', JSON.stringify(Session))
}
```### instance
XiaoAi 实例对象
#### say(text)
- `text` `{String}` 文本信息
- Returns: `{Promise}`朗读指定文本,返回接口调用结果
```javascript
client.say('你好,我是小爱')
```#### getDevice([name])
- `name` `{String}` 设备名称(别名)
- Returns: `{Promise}` 设备信息获取**在线**设备列表
```javascript
// 获取所有在线设备
const onlineDevices = await client.getDevice()// 获取单个设备,未找到时返回 null
const roomDevice = await client.getDevice('卧室小爱')
```#### useDevice(deviceId)
- `deviceId` `{String}` 设备 id
切换指定设备。`xiaomi-tts` 实例化后默认使用 `getDevice()` 方法返回的第一个设备,可使用此方法切换为指定设备。
```javascript
const roomDevice = await client.getDevice('卧室小爱')// 使用“卧室小爱”
client.useDevice(roomDevice.deviceID)client.say('你好,我是卧室的小爱')
```#### connect()
- Returns: `{Promise}` session 信息
- `Session.userId` `{String}`
- `Session.serviceToken` `{String}`获取 `Session` 信息
```javascript
const Session = await client.connect()
```#### test()
- Returns: `{Promise}`
测试连通性
```javascript
client.test()
```### 媒体控制
#### setVolume(volume)
- `volume` `{Number}` 音量值
- Returns: `{Promise}`设置音量
```javascript
client.setVolume(30)
```#### getVolume()
- Returns: `{Promise}` 音量值
获取音量
```javascript
const volume = await client.getVolume()
```#### volumeUp()
- Returns: `{Promise}`
调高音量,幅度 5
#### volumeDown()
- Returns: `{Promise}`
调低音量,幅度 5
#### getStatus()
- Returns: `{Promise}` 状态信息
获取设备运行状态
#### play()
- Returns: `{Promise}`
继续播放
#### pause()
- Returns: `{Promise}`
暂停播放
#### togglePlayState()
- Returns: `{Promise}`
切换播放状态(播放/暂停)
#### prev()
- Returns: `{Promise}`
播放上一曲
#### next()
- Returns: `{Promise}`
播放下一曲
#### getSongInfo(songId)
- `songId` `{String}` 歌曲 id
- Returns: `{Promise}` 歌曲信息查询歌曲信息
```javascript
const songInfo = await client.getSongInfo('7519904358300484678')
```#### getMyPlaylist([listId])
- `listId` `{String}` 歌单 id
- Returns: `{Promise}` 歌曲信息获取用户自建歌单,当指定 `listId` 时,将返回目标歌单内的歌曲列表
```javascript
// 获取歌单列表
const myPlaylist = await client.getMyPlaylist()// 获取歌单内的歌曲列表
const songList = await client.getMyPlaylist('337361232731772372')
```#### playUrl(url)
- `url` `{String}` 音频地址
- Returns: `{Promise}`播放在线音频
## 参考链接
- https://bbs.hassbian.com/thread-7060-1-7.html
- https://blog.csdn.net/leekwen/article/details/82378639