Update: 2026-05-07 18:29:37
This commit is contained in:
@@ -11,10 +11,20 @@ class VoiceAssistantService {
|
||||
Future<Map<String, dynamic>> processVoiceCommand(File audioFile) async {
|
||||
final fileName = audioFile.uri.pathSegments.isNotEmpty
|
||||
? audioFile.uri.pathSegments.last
|
||||
: 'voice_command.m4a';
|
||||
: 'voice_command.wav';
|
||||
final mimeType = _mimeTypeForFileName(fileName);
|
||||
final fileSize = await audioFile.length();
|
||||
|
||||
AppLogger.print(
|
||||
'Voice upload file=$fileName, bytes=$fileSize, mime=$mimeType, path=${audioFile.path}',
|
||||
);
|
||||
|
||||
final formData = FormData.fromMap({
|
||||
'audio': await MultipartFile.fromFile(audioFile.path, filename: fileName),
|
||||
'audio': await MultipartFile.fromFile(
|
||||
audioFile.path,
|
||||
filename: fileName,
|
||||
contentType: DioMediaType.parse(mimeType),
|
||||
),
|
||||
});
|
||||
|
||||
final response = await _dio.post(
|
||||
@@ -40,4 +50,14 @@ class VoiceAssistantService {
|
||||
AppLogger.print('Voice API success: ${body['message']}');
|
||||
return Map<String, dynamic>.from(payload);
|
||||
}
|
||||
|
||||
String _mimeTypeForFileName(String fileName) {
|
||||
final lower = fileName.toLowerCase();
|
||||
if (lower.endsWith('.wav')) return 'audio/wav';
|
||||
if (lower.endsWith('.flac')) return 'audio/flac';
|
||||
if (lower.endsWith('.mp3')) return 'audio/mp3';
|
||||
if (lower.endsWith('.aac')) return 'audio/aac';
|
||||
if (lower.endsWith('.ogg')) return 'audio/ogg';
|
||||
return 'audio/wav';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user