- Mise à jour de la version de l'application à `1.1.14` dans `app_version.dart` et `version.json`. - Migration de `AudioFeedbackService` vers l'API Web native (`dart:js_interop`, `package:web`) pour corriger les problèmes d'autoplay et supprimer la dépendance `audioplayers`. - Réécriture de `TextToSpeechService` utilisant `window.speechSynthesis` en remplacement de `flutter_tts` pour une meilleure compatibilité Web (notamment sous Linux). - Suppression des dépendances obsolètes `audioplayers` et `flutter_tts` du `pubspec.yaml`. - Ajout d'une gestion de file d'attente (`_scanQueue`) dans `EventPreparationPage` pour traiter les scans de codes-barres de manière séquentielle. - Intégration d'un bouton de diagnostic (`AudioDiagnosticButton`) pour tester manuellement l'audio et la synthèse vocale. - Ajout d'un script de test JavaScript `test_audio_tts.js` pour faciliter le débogage dans la console du navigateur. - Ajout de directives de style et d'architecture Dart/Flutter dans `.github/agents/`.
72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
*// Script de test pour valider l'audio et le TTS dans la console du navigateur
|
||
// À copier-coller dans la console pour diagnostic
|
||
|
||
console.log('========== TEST AUDIO ET TTS ==========');
|
||
|
||
// Test 1 : Vérifier les voix disponibles
|
||
console.log('\n1️⃣ Test des voix de synthèse :');
|
||
const synth = window.speechSynthesis;
|
||
const voices = synth.getVoices();
|
||
|
||
console.log(` ✓ Nombre de voix : ${voices.length}`);
|
||
|
||
const frenchVoices = voices.filter(v => v.lang.startsWith('fr'));
|
||
console.log(` ✓ Voix françaises : ${frenchVoices.length}`);
|
||
|
||
if (frenchVoices.length > 0) {
|
||
console.log(' ✓ Voix françaises disponibles :');
|
||
frenchVoices.forEach(v => {
|
||
console.log(` - ${v.name} (${v.lang}) ${v.localService ? 'LOCAL' : 'REMOTE'}`);
|
||
});
|
||
} else {
|
||
console.warn(' ⚠ AUCUNE voix française trouvée !');
|
||
}
|
||
|
||
// Test 2 : Tester le TTS
|
||
console.log('\n2️⃣ Test du TTS (dans 1 seconde) :');
|
||
setTimeout(() => {
|
||
const utterance = new SpeechSynthesisUtterance('Test de synthèse vocale');
|
||
utterance.lang = 'fr-FR';
|
||
utterance.rate = 0.7;
|
||
utterance.pitch = 0.7;
|
||
utterance.volume = 1.0;
|
||
|
||
if (frenchVoices.length > 0) {
|
||
utterance.voice = frenchVoices[0];
|
||
console.log(` ✓ Utilisation de la voix : ${frenchVoices[0].name}`);
|
||
}
|
||
|
||
utterance.onstart = () => console.log(' ✓ TTS démarré');
|
||
utterance.onend = () => console.log(' ✓ TTS terminé');
|
||
utterance.onerror = (e) => console.error(' ✗ Erreur TTS:', e);
|
||
|
||
synth.speak(utterance);
|
||
console.log(' → Lecture en cours...');
|
||
}, 1000);
|
||
|
||
// Test 3 : Tester l'audio (dans 3 secondes)
|
||
console.log('\n3️⃣ Test de l\'audio (dans 3 secondes) :');
|
||
setTimeout(() => {
|
||
const audio = new Audio('assets/assets/sounds/ok.mp3');
|
||
audio.volume = 1.0;
|
||
|
||
audio.onloadeddata = () => console.log(' ✓ Audio chargé');
|
||
audio.onplay = () => console.log(' ✓ Audio en lecture');
|
||
audio.onended = () => console.log(' ✓ Audio terminé');
|
||
audio.onerror = (e) => {
|
||
console.error(' ✗ Erreur audio:', audio.error);
|
||
console.error(' ✗ Code erreur:', audio.error?.code);
|
||
console.error(' ✗ Message:', audio.error?.message);
|
||
};
|
||
|
||
audio.play().then(() => {
|
||
console.log(' → Lecture audio démarrée');
|
||
}).catch(e => {
|
||
console.error(' ✗ Échec du play():', e);
|
||
});
|
||
}, 3000);
|
||
|
||
console.log('\n⏳ Tests en cours... Attendez les résultats ci-dessus');
|
||
console.log('========================================\n');
|
||
|