import 'dart:io';
import 'package:dartantic_ai/dartantic_ai.dart';
final agent = Agent('google');
final audioBytes = await File('audio.m4a').readAsBytes();
final schema = Schema.fromMap({
'type': 'object',
'properties': {
'transcript': {'type': 'string'},
'words': {
'type': 'array',
'items': {
'type': 'object',
'properties': {
'word': {'type': 'string'},
'start_time': {'type': 'number'},
'end_time': {'type': 'number'},
},
},
},
},
});
final result = await agent.sendFor<Map<String, dynamic>>(
'Transcribe this audio with word-level timestamps (in seconds).',
outputSchema: schema,
attachments: [
DataPart(audioBytes, mimeType: 'audio/mp4', name: 'audio.m4a'),
],
);
final transcription = result.output;
print('Transcript: ${transcription['transcript']}');
// Access word-level timestamps
for (final word in transcription['words'] as List) {
final w = word as Map<String, dynamic>;
print('${w['start_time']}s - ${w['end_time']}s: ${w['word']}');
}