import 'package:ai_chat_core/ai_chat_core.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; import 'package:http_parser/http_parser.dart'; @Deprecated('VoiceRecognitionService is deprecated, please use the new implementation if available.') class VoiceRecognitionService { Future recognizeSpeech(List audioBytes, {String lang = 'cn'}) async { try { Logger.i('准备发送OPUS音频数据,大小: ${audioBytes.length} 字节'); final uri = Uri.parse('http://143.64.185.20:18606/voice'); Logger.i('发送到: $uri'); final request = http.MultipartRequest('POST', uri); request.files.add( http.MultipartFile.fromBytes( 'audio', audioBytes, filename: 'record.wav', contentType: MediaType('audio', 'wav'), ), ); request.fields['lang'] = lang; // 根据参数设置语言 Logger.i('发送请求...'); final streamResponse = await request.send(); Logger.i('收到响应,状态码: ${streamResponse.statusCode}'); final response = await http.Response.fromStream(streamResponse); if (response.statusCode == 200) { Logger.i('响应内容: ${response.body}'); final text = _parseTextFromJson(response.body); if (text != null) { Logger.i('解析出文本: $text'); return text; // 返回识别的文本 } else { Logger.i('解析文本失败'); } } else { Logger.i('请求失败,状态码: ${response.statusCode},响应: ${response.body}'); } } catch (e) { Logger.i('发送录音到服务器时出错: $e'); } return null; } // 移到类内部作为私有方法 String? _parseTextFromJson(String body) { try { final decoded = jsonDecode(body); if (decoded.containsKey('text')) { return decoded['text'] as String?; } return null; } catch (e) { Logger.i('JSON解析错误: $e, 原始数据: $body'); return null; } } }