|
1 | 1 | # react-native-speech-iflytek
|
2 |
| -The doc is coming! |
| 2 | +react-native-speech-iflytek 是一个 React Native 下的科大讯飞语音库,可以进行语音识别与语音合成。 |
| 3 | + |
| 4 | +## Support |
| 5 | +- React Native >= 0.43, 低版本未经测试 |
| 6 | +- Android,目前仅支持 Android |
| 7 | + |
| 8 | +## Install |
| 9 | +``` |
| 10 | +npm i react-native-speech-iflytek --save |
| 11 | +react-native link |
| 12 | +``` |
| 13 | +安装后使用 Android Studio 重新构建。还须进行下面两步: |
| 14 | +1. 在 [讯飞开放平台](http://www.xfyun.cn/sdk/dispatcher) 下载组合服务SDK(选择`语音识别`与`在线语音合成`) |
| 15 | +2. 使用 SDK 的 `Android_voice_xxxx_xxxxxxxx/libs` 文件夹替换 `YourProject/node_modules/react-native-speech-iflytek/android/libs` 文件夹,这是因为讯飞语音的原生库与注册应用进行了绑定。 |
| 16 | + |
| 17 | +## Usage |
| 18 | +(详见 Example)引入包: |
| 19 | +``` |
| 20 | +import { Recognizer, Synthesizer } from "react-native-speech-iflytek"; |
| 21 | +``` |
| 22 | +语音识别: |
| 23 | +``` |
| 24 | +Recognizer.init("57c7c5b0"); |
| 25 | +DeviceEventEmitter.addListener("onRecognizerResult", this.onRecognizerResult); |
| 26 | +Recognizer.start(); |
| 27 | +``` |
| 28 | +处理识别结果: |
| 29 | +``` |
| 30 | +onRecognizerResult(e) { |
| 31 | + if (!e.isLast) { |
| 32 | + return; |
| 33 | + } |
| 34 | + ToastAndroid.show(e.result, ToastAndroid.SHORT); |
| 35 | + this.setState({ text: e.result }); |
| 36 | +} |
| 37 | +``` |
| 38 | +## API |
| 39 | + |
| 40 | +### Recognizer |
| 41 | +#### Methods |
| 42 | +- `Recognizer.init(String AppId)` |
| 43 | +初始化语音识别 |
| 44 | +- `Recognizer.start()` |
| 45 | +开始语音识别 |
| 46 | +- `Recognizer.cancel()` |
| 47 | +取消语音识别 |
| 48 | +- `Recognizer.isListening()` |
| 49 | +检测当前是否正在语音识别。返回 `Promise`,结果为 `bool` 类型,表示当前是否正在语音识别 |
| 50 | +- `Recognizer.stop()` |
| 51 | +如果正在语音识别,则结束语音识别 |
| 52 | +- `Recognizer.setParameter(String parameter, String value)` |
| 53 | +语音识别设置,详见讯飞语音文档 |
| 54 | +- `Recognizer.getParameter(String param)` |
| 55 | +获取语音识别设置,详见讯飞语音文档。返回 `Promise`,结果为 `String` 类型,表示语音识别设置值 |
| 56 | +#### Events |
| 57 | +- `onRecognizerResult(JSON result)` |
| 58 | +语音识别结果,在语音识别时会不断触发该事件,`result` 为 `JSON` 类型,其值: |
| 59 | + |
| 60 | + - `text`:当次识别结果 |
| 61 | + - `result`:当前识别结果,最常使用 |
| 62 | + - `isLast`:是否是最后一次识别,调用 `Recognizer.stop()` 后,`isLast` 值为 `true`,否则一直为 `false` |
| 63 | + - `duration`:当前识别时间长度 |
| 64 | +- `onRecognizerVolumeChanged(Int volume)` |
| 65 | +语音识别的音量大小,当识别的语音改变音量是会触发该事件 |
| 66 | + |
| 67 | +### Synthesizer |
| 68 | +#### Methods |
| 69 | +- `Synthesizer.init(String AppId)` |
| 70 | +初始化语音合成 |
| 71 | +- `Synthesizer.start(String content)` |
| 72 | +开始语音合成 |
| 73 | +- `Synthesizer.stop()` |
| 74 | +如果正在语音合成,则结束语音合成 |
| 75 | +- `Synthesizer.isSpeaking()` |
| 76 | +检测当前是否正在语音合成。返回 `Promise`,结果为 `bool` 类型,表示当前是否正在语音合成 |
| 77 | +- `Synthesizer.pause()` |
| 78 | +如果正在语音合成,则暂停语音合成 |
| 79 | +- `Synthesizer.setParameter(String parameter, String value)` |
| 80 | +语音合成设置,详见讯飞语音文档 |
| 81 | +- `Synthesizer.getParameter(String param)` |
| 82 | +获取语音合成设置,详见讯飞语音文档。返回 `Promise`,结果为 `String` 类型,表示语音合成设置值 |
| 83 | +#### Events |
| 84 | +- `onSynthesizerBufferCompletedEvent()` |
| 85 | +语音合成缓冲完成时触发该事件 |
| 86 | +- `onSynthesizerSpeakCompletedEvent()` |
| 87 | +语音合成播放完成时触发该事件 |
0 commit comments