Skip to content

Commit

Permalink
fix: replenish the remained revents for ios sdk
Browse files Browse the repository at this point in the history
  • Loading branch information
narol1024 committed May 3, 2024
1 parent 2ec595c commit 0177d4b
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 56 deletions.
122 changes: 76 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ A React Native wrapper around the Tencent Cloud ASR SDK for Android and iOS.

## Installation

### NPM installation
### NPM

```sh
npm install react-native-tencent-asr
```

### IOS
### iOS

执行`pod install`

Expand Down Expand Up @@ -44,33 +44,58 @@ Coming soon...

### 实时识别

#### 配置参数

```javascript
import { NativeEventEmitter, NativeModules } from 'react-native';
import { RealTimeRecognizerModule } from 'react-native-tencent-asr';

const RealTimeRecognizerModuleEmitter = new NativeEventEmitter(
NativeModules.RealTimeRecognizerModule
);

// 配置参数
// 配置AppID、SecretID、SecretKey
RealTimeRecognizerModule.configure({
appId: APP_ID,
secretId: SECRET_ID,
secretKey: SECRET_KEY,
});
```

#### 识别任务

```javascript
// 开始实时识别
RealTimeRecognizerModule.startRealTimeRecognizer();
// 结束实时识别
RealTimeRecognizerModule.stopRealTimeRecognizer();
```

#### 注册回调事件

```javascript
import { NativeEventEmitter, NativeModules } from 'react-native';
import { RealTimeRecognizerModule } from 'react-native-tencent-asr';

const RealTimeRecognizerModuleEmitter = new NativeEventEmitter(
NativeModules.RealTimeRecognizerModule
);

// 注册事件
RealTimeRecognizerModuleEmitter.addListener(
'RealTimeRecognizerOnSegmentSuccessRecognize',
(result) => {
console.log('语音的识别结果', result);
console.log('语音识别结果', result);
}
);
// 开始实时识别
RealTimeRecognizerModule.startRealTimeRecognizer();
// 结束实时识别
RealTimeRecognizerModule.stopRealTimeRecognizer();
```

详细事件列表,请查看SDK文档, https://cloud.tencent.com/document/product/1093/35723

- RealTimeRecognizerOnSliceRecognize
- RealTimeRecognizerOnSegmentSuccessRecognize
- RealTimeRecognizerDidFinish
- RealTimeRecognizerDidError
- RealTimeRecognizerDidStartRecord
- RealTimeRecognizerDidStopRecord
- RealTimeRecognizerDidUpdateVolumeDB
- RealTimeRecognizerDidSaveAudioDataAsFile

### 一句话识别

#### 配置参数
Expand All @@ -86,58 +111,59 @@ OneSentenceRecognizerModule.configure({
});
```

#### 注册回调事件

```javascript
import { OneSentenceRecognizerModule } from 'react-native-tencent-asr';

const OneSentenceRecognizerModuleEmitter = new NativeEventEmitter(
NativeModules.OneSentenceRecognizerModule
);

OneSentenceRecognizerModuleEmitter.addListener(
'OneSentenceRecognizerDidRecognize',
(result) => {
if (result.error) {
console.log('语音识别失败', result.error);
return;
}
console.log('语音识别结果', result);
}
);
```

#### 一句话识别(网络URL)

```javascript
import { OneSentenceRecognizerModule } from 'react-native-tencent-asr';

OneSentenceRecognizerModule.recognizeWithUrl({
url: 'Your audio file remote url, such as https://xx.com/x.mp3',
url: 'The Remote url of the audio file, such as https://xx.com/x.mp3',
voiceFormat: 'mp3',
});
```

#### 一句话识别(本地音频)

```javascript
import { OneSentenceRecognizerModule } from 'react-native-tencent-asr';

OneSentenceRecognizerModule.recognizeWithParams({
filePath: 'Your audio file path',
filePath: 'The audio file path',
voiceFormat: 'mp3',
});
```

#### 一句话识别(内置录音器)

```javascript
import { OneSentenceRecognizerModule } from 'react-native-tencent-asr';

OneSentenceRecognizerModule.startRecognizeWithRecorder();
OneSentenceRecognizerModule.stopRecognizeWithRecorder();
```

#### 注册回调事件

```javascript
import { OneSentenceRecognizerModule } from 'react-native-tencent-asr';

const OneSentenceRecognizerModuleEmitter = new NativeEventEmitter(
NativeModules.OneSentenceRecognizerModule
);

OneSentenceRecognizerModuleEmitter.addListener(
'OneSentenceRecognizerDidRecognize',
(result) => {
if (result.error) {
console.log('语音识别失败', result.error);
return;
}
console.log('语音识别结果', result);
}
);
```

详细事件列表,请查看SDK文档, https://cloud.tencent.com/document/product/1093/36502

- OneSentenceRecognizerDidRecognize
- OneSentenceRecognizerDidStartRecord
- OneSentenceRecognizerDidEndRecord
- OneSentenceRecognizerDidUpdateVolume

### 录音文件识别极速版

```javascript
Expand All @@ -149,10 +175,14 @@ FlashFileRecognizerModule.configure({
secretKey: SECRET_KEY,
});

const result = await FlashFileRecognizerModule.flashFileRecognizer({
filePath: 'Your audio file path',
voiceFormat: 'mp3',
});
try {
const result = await FlashFileRecognizerModule.flashFileRecognizer({
filePath: 'The audio file path',
voiceFormat: 'mp3',
});
} catch (err) {
// handle error
}
```

## Screenshot
Expand Down
2 changes: 1 addition & 1 deletion example/src/FlashFileRecognizerApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function FlashFileRecognizerApp(props: any) {
filePath: dirs.DocumentDir + '/202405012158499.mp3',
voiceFormat: 'mp3',
});
props.onRecognize(result);
props.onRecognize(result.text);
} catch (error) {
props.onRecognize('识别错误');
}
Expand Down
11 changes: 8 additions & 3 deletions ios/FlashFileRecognizerModule.mm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// @see SDK doc: https://cloud.tencent.com/document/product/1093/52580
// @see SDK doc: https://cloud.tencent.com/document/product/1093/35723

#import "FlashFileRecognizerModule.h"

Expand All @@ -15,7 +15,8 @@ @implementation FlashFileRecognizerModule {

// 配置AppID、SecretID、SecretKey, Token
RCT_EXPORT_METHOD(configure : (NSDictionary *)params) {

NSLog(@"录音文件识别极速版, 配置AppID、SecretID、SecretKey, Token参数: %@",
params);
_appId = params[@"appId"];
_secretId = params[@"secretId"];
_secretKey = params[@"secretKey"];
Expand Down Expand Up @@ -96,7 +97,11 @@ - (void)FlashFileRecognizer:(QCloudFlashFileRecognizer *_Nullable)recognizer
resultData:(nullable NSDictionary *)resultData {
if (status == 0) {
NSLog(@"识别成功");
_recognizerResolve(text);
NSDictionary *resultBody = @{
@"text" : text,
@"resultData" : resultData,
};
_recognizerResolve(resultBody);
} else {
NSLog(@"识别失败");
_recognizerReject(@"status_error", @"Recognition failed", nil);
Expand Down
29 changes: 25 additions & 4 deletions ios/OneSentenceRecognizerModule.mm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// @see SDK doc: https://cloud.tencent.com/document/product/1093/52580
// @see SDK doc: https://cloud.tencent.com/document/product/1093/36502

#import "OneSentenceRecognizerModule.h"

Expand Down Expand Up @@ -29,7 +29,8 @@ - (void)stopObserving {

// 配置AppID、SecretID、SecretKey, Token
RCT_EXPORT_METHOD(configure : (NSDictionary *)configParams) {
NSLog(@"一句话识别, 用户自定义参数: %@", configParams);
NSLog(@"一句话识别, 配置AppID、SecretID、SecretKey, Token参数: %@",
configParams);

NSString *appId = configParams[@"appId"];
NSString *secretId = configParams[@"secretId"];
Expand Down Expand Up @@ -166,13 +167,27 @@ - (void)oneSentenceRecognizerDidRecognize:(QCloudSentenceRecognizer *)recognizer
- (void)oneSentenceRecognizerDidStartRecord:
(QCloudSentenceRecognizer *)recognizer
error:(nullable NSError *)error {
NSDictionary *body = error ? @{
@"code" : error.userInfo[@"Code"],
@"message" : error.userInfo[@"Message"]
}
: nil;

NSLog(@"开始录音回调: %@", body);
[self sendEventWithName:@"OneSentenceRecognizerDidStartRecord" body:body];
}
/**
* 结束录音回调, SDK通过此方法回调后内部开始上报语音数据进行识别
*/
- (void)oneSentenceRecognizerDidEndRecord:
(QCloudSentenceRecognizer *)recognizer {
- (void)oneSentenceRecognizerDidEndRecord:(QCloudSentenceRecognizer *)recognizer
audioFilePath:(nonnull NSString *)audioFilePath {
NSDictionary *resultBody = @{
@"audioFilePath" : audioFilePath,
};
NSLog(@"结束录音回调: %@", resultBody);
[self sendEventWithName:@"OneSentenceRecognizerDidEndRecord" body:resultBody];
}

/**
* 录音音量实时回调用
* @param recognizer 识别器实例
Expand All @@ -181,6 +196,12 @@ - (void)oneSentenceRecognizerDidEndRecord:
- (void)oneSentenceRecognizerDidUpdateVolume:
(QCloudSentenceRecognizer *)recognizer
volume:(float)volume {
NSDictionary *resultBody = @{
@"volume" : @(volume),
};
NSLog(@"录音音量实时回调: %@", resultBody);
[self sendEventWithName:@"OneSentenceRecognizerDidUpdateVolume"
body:resultBody];
}
/**
* 日志输出
Expand Down
2 changes: 1 addition & 1 deletion ios/RealTimeRecognizerModule.mm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// @see SDK doc: https://cloud.tencent.com/document/product/1093/52580
// @see SDK doc: https://cloud.tencent.com/document/product/1093/35723

#import "RealTimeRecognizerModule.h"

Expand Down
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,9 @@ export const FlashFileRecognizerModule = {
NativeModules.FlashFileRecognizerModule.configure(params);
},
// 快速识别
flashFileRecognizer(params: FlashFileRecognizerParams): Promise<string> {
flashFileRecognizer(
params: FlashFileRecognizerParams
): Promise<{ text: string; resultData: Object }> {
return NativeModules.FlashFileRecognizerModule.flashFileRecognizer(params);
},
};

0 comments on commit 0177d4b

Please sign in to comment.