Skip to content

Commit

Permalink
perf: makes log clear
Browse files Browse the repository at this point in the history
  • Loading branch information
narol1024 committed May 8, 2024
1 parent 4d4e436 commit 57876a0
Show file tree
Hide file tree
Showing 15 changed files with 374 additions and 311 deletions.
229 changes: 142 additions & 87 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class FlashFileRecognizerModule extends ReactContextBaseJavaModule
private String _token;
private Promise _promise;
private QCloudFlashRecognitionParams _requestParams;
private ReactContext _reactContext;
private final ReactContext _reactContext;
private QCloudFlashRecognizer _recognizer;

public FlashFileRecognizerModule(ReactApplicationContext reactContext) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,9 @@ public class OneSentenceRecognizerModule extends ReactContextBaseJavaModule
private String _secretId;
private String _secretKey;
private String _token;
private Boolean _isRecording = false;
private QCloudOneSentenceRecognizer _recognizer;
private ReactContext _reactContext;
private final ReactContext _reactContext;
private QCloudOneSentenceRecognitionParams _requestParams;

public OneSentenceRecognizerModule(ReactApplicationContext reactContext) {
Expand Down Expand Up @@ -182,26 +183,34 @@ public void recognizeWithParams(ReadableMap configParams) {
// 调用该方法前, 确认已经授权录音权限,
// 在Virtual Devices下, 确认Microphone设置开启
@ReactMethod
public void recognizeWithRecorder() {
Log.i(ModuleName, "调用recognizeWithRecorder方法");
public void startRecognizeWithRecorder() {
Log.i(ModuleName, "调用startRecognizeWithRecorder方法");
if (_isRecording) {
return;
}
try {
initializeRecognizer();
_recognizer.recognizeWithRecorder();
} catch (Exception e) {
sendErrorEvent(
OneSentenceRecognizerModuleErrorTypes.RECOGNIZE_WITH_RECORDER_FAILED,
e.getMessage());
} finally {
_isRecording = true;
}
}

@ReactMethod
public void stopRecognizeWithRecorder() {
Log.i(ModuleName, "调用stopRecognizeWithRecorder方法");
_isRecording = false;
_recognizer.stopRecognizeWithRecorder();
}

// 一句话识别结果回调
// 识别结果回调
public void recognizeResult(QCloudOneSentenceRecognizer recognizer,
String result, Exception exception) {
Log.i(ModuleName, "识别结果回调");
if (exception == null) {
try {
JSONObject resultJson = new JSONObject(result);
Expand All @@ -225,18 +234,22 @@ public void recognizeResult(QCloudOneSentenceRecognizer recognizer,
}
}

// 开始录音回调
public void didStartRecord() {
Log.i(ModuleName, "回调didStartRecord");
Log.i(ModuleName, "开始录音回调");
sendEvent(_reactContext, "onStartRecord", Arguments.createMap());
}

// 结束录音回调
public void didStopRecord() {
Log.i(ModuleName, "回调didStopRecord");
// TODO: Android这里有没有文件?
Log.i(ModuleName, "结束录音回调");
sendEvent(_reactContext, "onStopRecord", Arguments.createMap());
}

// 音量更新回调
public void didUpdateVolume(int volumn) {
Log.i(ModuleName, "回调didUpdateVolume");
Log.i(ModuleName, "音量更新回调");
WritableMap resultBody = Arguments.createMap();
resultBody.putInt("volumn", volumn);
sendEvent(_reactContext, "onUpdateVolume", resultBody);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
Expand All @@ -27,17 +26,9 @@
import com.tencent.aai.model.AudioRecognizeConfiguration;
import com.tencent.aai.model.AudioRecognizeRequest;
import com.tencent.aai.model.AudioRecognizeResult;
import com.tencent.cloud.qcloudasrsdk.onesentence.QCloudOneSentenceRecognizer;
import com.tencent.cloud.qcloudasrsdk.onesentence.QCloudOneSentenceRecognizerAudioPathListener;
import com.tencent.cloud.qcloudasrsdk.onesentence.QCloudOneSentenceRecognizerListener;
import com.tencent.cloud.qcloudasrsdk.onesentence.common.QCloudAudioFrequence;
import com.tencent.cloud.qcloudasrsdk.onesentence.common.QCloudSourceType;
import com.tencent.cloud.qcloudasrsdk.onesentence.network.QCloudOneSentenceRecognitionParams;
import com.tencentasr.util.ConfigParameterUtils;
import com.tencentasr.util.ErrorTypes;
import com.tencentasr.util.ReactNativeJsonUtils;
import java.io.File;
import java.io.FileInputStream;
import org.json.JSONObject;

// 本地模块错误
Expand All @@ -54,10 +45,11 @@ public class RealTimeRecognizerModule extends ReactContextBaseJavaModule {
private String _secretKey;
// 不设置默认使用0,说明:项目功能用于按项目管理云资源,可以对云资源进行分项目管理,详情见
// https://console.cloud.tencent.com/project
private int _projectId;
private int _projectId = 0;
private String _token;
private AAIClient _aaiClient;
private ReactContext _reactContext;
private Boolean _isRecording = false;
private final ReactContext _reactContext;
private AudioRecognizeRequest _audioRecognizeRequest;
private AudioRecognizeResultListener _audioRecognizeResultlistener;
private AudioRecognizeStateListener _audioRecognizeStateListener;
Expand Down Expand Up @@ -121,7 +113,7 @@ public void configure(final ReadableMap configParams) {
ConfigParameterUtils.getIntOrDefault(configParams, "projectId", 0);
_token = configParams.getString("token");

// 2、初始化语音识别请求
// 初始化语音识别请求
AudioRecognizeRequest.Builder builder = new AudioRecognizeRequest.Builder();
_audioRecognizeRequest =
builder.pcmAudioDataSource(new AudioRecordDataSource(false))
Expand All @@ -145,13 +137,13 @@ public void onSliceSuccess(AudioRecognizeRequest request,
AudioRecognizeResult result, int seq) {
try {
JSONObject resultJson = new JSONObject(result.getResultJson());
JSONObject resultInnerJson = resultJson.getJSONObject("result");
JSONObject innerResultJson = resultJson.getJSONObject("result");
WritableMap resultBody = Arguments.createMap();

resultBody.putInt("code", resultJson.getInt("code"));
resultBody.putString("message", resultJson.getString("message"));
resultBody.putString("text",
resultInnerJson.getString("voice_text_str"));
innerResultJson.getString("voice_text_str"));
resultBody.putString("voiceId", resultJson.getString("voice_id"));

sendEvent(_reactContext, "onSliceSuccessRecognize", resultBody);
Expand All @@ -166,13 +158,13 @@ public void onSegmentSuccess(AudioRecognizeRequest request,
AudioRecognizeResult result, int seq) {
try {
JSONObject resultJson = new JSONObject(result.getResultJson());
JSONObject resultInnerJson = resultJson.getJSONObject("result");
JSONObject innerResultJson = resultJson.getJSONObject("result");
WritableMap resultBody = Arguments.createMap();

resultBody.putInt("code", resultJson.getInt("code"));
resultBody.putString("message", resultJson.getString("message"));
resultBody.putString("text",
resultInnerJson.getString("voice_text_str"));
innerResultJson.getString("voice_text_str"));
resultBody.putString("voiceId", resultJson.getString("voice_id"));

sendEvent(_reactContext, "onSegmentSuccessRecognize", resultBody);
Expand All @@ -186,7 +178,7 @@ public void onSegmentSuccess(AudioRecognizeRequest request,
public void onSuccess(AudioRecognizeRequest request, String result) {
try {
WritableMap resultBody = Arguments.createMap();
resultBody.putString("recognizedText", result);
resultBody.putString("text", result);
sendEvent(_reactContext, "onSuccessRecognize", resultBody);
} catch (Exception e) {
sendErrorEvent(
Expand Down Expand Up @@ -217,7 +209,7 @@ public void onFailure(
}
}
};
// 3.1、初始化语音识别的状态监听器。
// 初始化语音识别的状态监听器。
_audioRecognizeStateListener = new AudioRecognizeStateListener() {
// 开始录音
public void onStartRecord(AudioRecognizeRequest audioRecognizeRequest) {
Expand Down Expand Up @@ -247,7 +239,7 @@ public void onSilentDetectTimeOut() {
}
};

// 4、自定义识别配置
// 自定义识别配置
_audioRecognizeConfiguration = new AudioRecognizeConfiguration.Builder()
.setSilentDetectTimeOut(false)
.audioFlowSilenceTimeOut(5000)
Expand All @@ -256,13 +248,18 @@ public void onSilentDetectTimeOut() {
initializeRecognizer();
}

// 5、启动语音识别
// 启动语音识别
@ReactMethod
public void startRealTimeRecognizer() {
Log.i(ModuleName, "调用startRealTimeRecognizer方法");
if (_isRecording) {
return;
}
new Thread(new Runnable() {
@Override
public void run() {
if (_aaiClient != null) {
_isRecording = true;
_aaiClient.startAudioRecognize(
_audioRecognizeRequest, _audioRecognizeResultlistener,
_audioRecognizeStateListener, _audioRecognizeConfiguration);
Expand All @@ -274,9 +271,11 @@ public void run() {
// 停止语音识别,等待最终识别结果
@ReactMethod
public void stopRealTimeRecognizer() {
Log.i(ModuleName, "调用stopRealTimeRecognizer方法");
new Thread(new Runnable() {
public void run() {
if (_aaiClient != null) {
_isRecording = false;
_aaiClient.stopAudioRecognize();
}
}
Expand Down
2 changes: 1 addition & 1 deletion example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const styles = StyleSheet.create({
padding: 10,
alignItems: 'center',
justifyContent: 'flex-start',
gap: 10,
gap: 20,
},
resultView: {
width: '100%',
Expand Down
4 changes: 1 addition & 3 deletions example/src/FlashFileRecognizerApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const dirs = RNFetchBlob.fs.dirs;
export function FlashFileRecognizerApp(props: any) {
useEffect(() => {
FlashFileRecognizerModule.addListener('onError', (error) => {
console.error(error);
console.error('发生错误: ', error);
});
return () => {
FlashFileRecognizerModule.removeAllListeners('onError');
Expand Down Expand Up @@ -54,7 +54,5 @@ export function FlashFileRecognizerApp(props: any) {
const styles = StyleSheet.create({
container: {
width: '100%',
borderTopColor: '#dedede',
borderTopWidth: 1,
},
});
9 changes: 2 additions & 7 deletions example/src/OneSentenceRecognizer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ export function OneSentenceRecognizerApp(props: any) {
props.onRecognize(result.result);
});
OneSentenceRecognizerModule.addListener('onError', (error) => {
console.error(error);
});
OneSentenceRecognizerModule.addListener('onUpdateVolume', (result) => {
console.log('>>', result);
console.error('发生错误: ', error);
});
return () => {
OneSentenceRecognizerModule.removeAllListeners('onRecognize');
Expand Down Expand Up @@ -70,7 +67,7 @@ export function OneSentenceRecognizerApp(props: any) {
OneSentenceRecognizerModule.stopRecognizeWithRecorder();
setIsRecording(false);
} else {
OneSentenceRecognizerModule.recognizeWithRecorder();
OneSentenceRecognizerModule.startRecognizeWithRecorder();
setIsRecording(true);
}
}}
Expand All @@ -84,7 +81,5 @@ const styles = StyleSheet.create({
flexDirection: 'column',
gap: 4,
width: '100%',
borderTopColor: '#dedede',
borderTopWidth: 1,
},
});
10 changes: 4 additions & 6 deletions example/src/RealTimeRecognizerApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ import { APP_ID, SECRET_ID, SECRET_KEY } from './constants';

export function RealTimeRecognizerApp(props: any) {
const [isRecording, setIsRecording] = useState(false);

useEffect(() => {
RealTimeRecognizerModule.addListener(
'onSliceSuccessRecognize',
'onSegmentSuccessRecognize',
(result) => {
console.log(result);
props.onRecognize(result.text);
}
);
RealTimeRecognizerModule.addListener('onError', (err) => {
console.log(err);
RealTimeRecognizerModule.addListener('onError', (error) => {
console.error('发生错误: ', error);
});
return () => {
RealTimeRecognizerModule.removeAllListeners('onSegmentSuccessRecognize');
RealTimeRecognizerModule.removeAllListeners('onError');
};
}, [props]);

Expand Down Expand Up @@ -52,7 +52,5 @@ export function RealTimeRecognizerApp(props: any) {
const styles = StyleSheet.create({
container: {
width: '100%',
borderTopColor: '#dedede',
borderTopWidth: 1,
},
});
3 changes: 2 additions & 1 deletion ios/FlashFileRecognizerModule.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>

#import <QCloudFileRecognizer/QCloudFlashFileRecognizeParams.h>
#import <QCloudFileRecognizer/QCloudFlashFileRecognizer.h>

@interface FlashFileRecognizerModule
: NSObject <RCTBridgeModule, QCloudFlashFileRecognizerDelegate>
: RCTEventEmitter <RCTBridgeModule, QCloudFlashFileRecognizerDelegate>

@end
Loading

0 comments on commit 57876a0

Please sign in to comment.