mirror of
https://gitlab.rlp.net/proj-wise2526-video2document/video2document.git
synced 2026-06-15 18:01:52 +02:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
// services/pipeline/jobs/transcribeLatest.ts
|
|
import path from 'path';
|
|
import fs from 'fs';
|
|
// @ts-ignore: module has no type declarations or cannot be resolved in current TS config
|
|
import assembly from '../../modules/transcription/assembly';
|
|
|
|
/**
|
|
* Finds the most recently modified .wav file in storage/audio/
|
|
*/
|
|
function getLatestWav(): string {
|
|
const audioDir = path.join(process.cwd(), 'storage', 'audio');
|
|
const files = fs.readdirSync(audioDir).filter(f => f.toLowerCase().endsWith('.wav'));
|
|
if (files.length === 0) throw new Error('⚠️ No .wav file found in storage/audio');
|
|
|
|
const newest = files
|
|
.map(f => ({ f, t: fs.statSync(path.join(audioDir, f)).mtimeMs }))
|
|
.sort((a, b) => b.t - a.t)[0].f;
|
|
|
|
return path.join(audioDir, newest);
|
|
}
|
|
|
|
/**
|
|
* Full transcription pipeline according to the defined workflow:
|
|
* 1. Audio Upload → AssemblyAI
|
|
* 2. Job Creation (transcript_id)
|
|
* 3. Polling Status (queued → processing → completed)
|
|
* 4. Download Transcript JSON
|
|
* 5. Storage: /transcripts/{session_id}.json
|
|
*/
|
|
async function main() {
|
|
const audioPath = getLatestWav();
|
|
|
|
console.log('1️⃣ Audio Upload → AssemblyAI');
|
|
console.log(' Source:', audioPath);
|
|
|
|
console.log('2️⃣ Job Creation (transcript_id)');
|
|
console.log('3️⃣ Polling Status (queued → processing → completed)');
|
|
console.log('4️⃣ Download Transcript JSON');
|
|
console.log('5️⃣ Storage: /transcripts/{session_id}.json');
|
|
|
|
// Execute the transcription process via the AssemblyAI module
|
|
const result = await assembly.run(audioPath);
|
|
|
|
console.log('✅ Transcription completed successfully');
|
|
console.log('🆔 Transcript ID:', result.id);
|
|
console.log('📁 Transcript file saved under: storage/transcripts/');
|
|
}
|
|
|
|
// Entry point
|
|
main().catch((err) => {
|
|
console.error('❌ Transcription pipeline failed:', err.message || err);
|
|
process.exit(1);
|
|
});
|