Browse Source

暂时注释掉火山识别

newdev_shunjiawei
fdp 1 year ago
parent
commit
30ee5448f3
  1. 134
      lib/data/services/speech_impl/volcano_asr_api_service.dart
  2. 72
      lib/data/services/speech_impl/volcano_asr_service.dart

134
lib/data/services/speech_impl/volcano_asr_api_service.dart

@ -113,41 +113,41 @@ class VolcanoAsrApiService implements AsrService {
final resultCompleter = Completer<RecognitionEvent>(); final resultCompleter = Completer<RecognitionEvent>();
// 开始连续识别流程 // // 开始连续识别流程
final stream = await startContinuousRecognition(_audioSourceType); // final stream = await startContinuousRecognition(_audioSourceType);
// 监听结果 // // 监听结果
StreamSubscription? subscription; // StreamSubscription? subscription;
subscription = stream.listen((event) { // subscription = stream.listen((event) {
if (event.type == RecognitionEventType.finalResult) { // if (event.type == RecognitionEventType.finalResult) {
// 收到最终结果,完成单次识别 // // 收到最终结果,完成单次识别
subscription?.cancel(); // subscription?.cancel();
resultCompleter.complete(event); // resultCompleter.complete(event);
stopContinuousRecognition(); // stopContinuousRecognition();
} else if (event.type == RecognitionEventType.error) { // } else if (event.type == RecognitionEventType.error) {
// 发生错误,返回错误 // // 发生错误,返回错误
subscription?.cancel(); // subscription?.cancel();
resultCompleter.completeError(event.error); // resultCompleter.completeError(event.error);
stopContinuousRecognition(); // stopContinuousRecognition();
} // }
}, onError: (e) { // }, onError: (e) {
subscription?.cancel(); // subscription?.cancel();
resultCompleter.completeError(e.toString()); // resultCompleter.completeError(e.toString());
stopContinuousRecognition(); // stopContinuousRecognition();
}, onDone: () { // }, onDone: () {
if (!resultCompleter.isCompleted) { // if (!resultCompleter.isCompleted) {
resultCompleter.complete(RecognitionEvent.error('未收到识别结果')); // resultCompleter.complete(RecognitionEvent.error('未收到识别结果'));
} // }
}); // });
// 设置超时 // // 设置超时
Timer(const Duration(seconds: 30), () { // Timer(const Duration(seconds: 30), () {
if (!resultCompleter.isCompleted) { // if (!resultCompleter.isCompleted) {
subscription?.cancel(); // subscription?.cancel();
resultCompleter.complete(RecognitionEvent.error('识别超时')); // resultCompleter.complete(RecognitionEvent.error('识别超时'));
stopContinuousRecognition(); // stopContinuousRecognition();
} // }
}); // });
return resultCompleter.future; return resultCompleter.future;
} catch (e) { } catch (e) {
@ -157,44 +157,44 @@ class VolcanoAsrApiService implements AsrService {
} }
@override @override
Future<Stream<RecognitionEvent>> startContinuousRecognition( // Future<Stream<RecognitionEvent>> startContinuousRecognition(
bool audioSourceType) async { // bool audioSourceType) async {
if (!_isInitialized) { // if (!_isInitialized) {
await initialize(); // await initialize();
} // }
if (_isContinuousRecognitionActive) { // if (_isContinuousRecognitionActive) {
await stopContinuousRecognition(); // await stopContinuousRecognition();
} // }
try { // try {
// 创建结果控制器 // // 创建结果控制器
_recognitionController = StreamController<RecognitionEvent>.broadcast(); // _recognitionController = StreamController<RecognitionEvent>.broadcast();
// 连接WebSocket // // 连接WebSocket
await _connectWebSocket(); // await _connectWebSocket();
// 开始录音 // // 开始录音
await _startRecording(); // await _startRecording();
_isContinuousRecognitionActive = true; // _isContinuousRecognitionActive = true;
_isRecognitionEndRequested = false; // _isRecognitionEndRequested = false;
Logger.info('连续语音识别已开始'); // Logger.info('连续语音识别已开始');
return _recognitionController!.stream; // return _recognitionController!.stream;
} catch (e) { // } catch (e) {
Logger.error('开始连续语音识别失败: ${e.toString()}'); // Logger.error('开始连续语音识别失败: ${e.toString()}');
await _cleanupResources(); // await _cleanupResources();
// 返回一个包含错误的流 // // 返回一个包含错误的流
final errorController = StreamController<RecognitionEvent>.broadcast(); // final errorController = StreamController<RecognitionEvent>.broadcast();
errorController.add(RecognitionEvent.error(e.toString())); // errorController.add(RecognitionEvent.error(e.toString()));
errorController.close(); // errorController.close();
return errorController.stream; // return errorController.stream;
} // }
} // }
@override @override
Future<bool> stopContinuousRecognition() async { Future<bool> stopContinuousRecognition() async {
@ -859,4 +859,10 @@ class VolcanoAsrApiService implements AsrService {
// TODO: implement recognizeCallback // TODO: implement recognizeCallback
throw UnimplementedError(); throw UnimplementedError();
} }
@override
Future<bool> startContinuousRecognition(bool audioSourceType) {
// TODO: implement startContinuousRecognition
throw UnimplementedError();
}
} }

72
lib/data/services/speech_impl/volcano_asr_service.dart

@ -265,39 +265,39 @@ class VolcanoAsrService extends GetxService implements AsrService {
/// 开始连续语音识别 /// 开始连续语音识别
@override @override
Future<Stream<RecognitionEvent>> startContinuousRecognition( // Future<Stream<RecognitionEvent>> startContinuousRecognition(
bool audioSourceType) async { // bool audioSourceType) async {
if (!await _ensureInitialized()) { // if (!await _ensureInitialized()) {
_eventStreamController.add(RecognitionEvent( // _eventStreamController.add(RecognitionEvent(
type: RecognitionEventType.error, // type: RecognitionEventType.error,
error: '语音识别服务未初始化', // error: '语音识别服务未初始化',
)); // ));
return _eventStreamController.stream; // return _eventStreamController.stream;
} // }
try { // try {
final success = await _channel.invokeMethod<bool>('audioSourceType', { // final success = await _channel.invokeMethod<bool>('audioSourceType', {
'audioSourceType': audioSourceType, // 'audioSourceType': audioSourceType,
}) ?? // }) ??
false; // false;
if (success) { // if (success) {
_isContinuousRecognitionActive = true; // _isContinuousRecognitionActive = true;
} else { // } else {
_eventStreamController.add(RecognitionEvent( // _eventStreamController.add(RecognitionEvent(
type: RecognitionEventType.error, // type: RecognitionEventType.error,
error: '启动连续识别失败', // error: '启动连续识别失败',
)); // ));
} // }
} catch (e) { // } catch (e) {
_eventStreamController.add(RecognitionEvent( // _eventStreamController.add(RecognitionEvent(
type: RecognitionEventType.error, // type: RecognitionEventType.error,
error: '启动连续识别异常:$e', // error: '启动连续识别异常:$e',
)); // ));
} // }
return _eventStreamController.stream; // return _eventStreamController.stream;
} // }
/// 停止连续语音识别 /// 停止连续语音识别
@override @override
@ -394,4 +394,10 @@ class VolcanoAsrService extends GetxService implements AsrService {
// TODO: implement recognizeCallback // TODO: implement recognizeCallback
throw UnimplementedError(); throw UnimplementedError();
} }
@override
Future<bool> startContinuousRecognition(bool audioSourceType) {
// TODO: implement startContinuousRecognition
throw UnimplementedError();
}
} }

Loading…
Cancel
Save