18 KiB
đïž TranscribeStation
Gestionnaire de transcription audio avec support natif des pédaliers Olympus.
Interface inspirée de Philips SpeechExec et Olympus ODMS.
JT-Tools by Johnny â dĂ©veloppĂ© pour H3Campus
Sommaire
- Fonctionnalités
- Capture d'écran
- Prérequis
- Installation
- Configuration du pédalier
- Utilisation
- Raccourcis clavier
- Formats audio supportés
- ParamĂštres
- Compilation en binaire
- Architecture
- Limitations connues
- Dépannage
Fonctionnalités
| Catégorie | Détails |
|---|---|
| Lecteur audio | Lecture, pause, stop, rembobinage, avance rapide, vitesse (0.5Ă â 2.0Ă) |
| Volume | Slider toolbar + muet, raccourcis + / - / M |
| Forme d'onde | Waveform interactive (clic pour se positionner) via NumPy + SoundFile |
| Navigation | Fichier précédent / suivant depuis la toolbar et le clavier |
| Gestion fichiers | Navigation par dossiers, ajout manuel, filtres par statut |
| Statuts | Ă faire · En cours · Suspendu · TerminĂ© â persistĂ©s entre sessions |
| PĂ©daliers | RS27H/N · RS28H/N · RS31H/N â reconnexion automatique si dĂ©branchĂ© |
| Persistance | Base de données JSON locale (.transcribe_station.json) par dossier |
| Interface | ThÚme sombre, toolbar emoji, séparateur redimensionnable, barre de statut |
| Raccourcis | 15 raccourcis clavier couvrant transport, volume, vitesse et navigation |
| Compilation | Binaire autonome Linux + Windows via build.py (PyInstaller) |
| Raccourcis OS | Entrée GNOME (.desktop + icÎne XDG) et menu Démarrer Windows (.lnk) |
Capture d'écran
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â đ â đŸ â âźïž âȘïž â¶ïž â©ïž âïž âčïž â ⫠⏠â đ ââââââ â âïž â đŠ¶ ConnectĂ© â
âââââââââââââââŹâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â đ DictĂ©es â Nom du fichier N° Auteur Type DurĂ©e Statut â
â đ„ Ă faire â â DICT0070.wav 69 DUPONT LETTRE 05:00 Ă faire â
â đ” En coursâ â DICT0007.wav 55 MARTIN GEN. 12:30 TerminĂ© â
â â
TerminĂ© â â DICT0008.wav 56 MARTIN GEN. 08:15 En cours â
â âž Suspendu â â
â â â
â đš Dossiers â â
â đ 2024-Q4 â â
â đ 2025-Q1 â â
âââââââââââââââŽâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â ââââââââââââââââââââââââââââââââââââââââââââ â waveform interactive â
â 01:23 ââââââââââââââââââââââââââââââââââââââââ 05:00 â
â Vitesse: 1.0Ă Volume: âââââââââââ đŠ¶ RS27H/N connectĂ© â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Prérequis
SystĂšme (Debian 12 / 13)
sudo apt-get install -y \
python3 python3-pip python3-venv \
libhidapi-dev libhidapi-hidraw0 libusb-1.0-0 \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
fonts-noto-color-emoji
GStreamer est requis par PyQt6 QtMultimedia pour lire l'audio sous Linux.
fonts-noto-color-emoji assure le rendu des emojis dans la toolbar.
Dépendances Python
| Paquet | Version min | RĂŽle | Optionnel |
|---|---|---|---|
PyQt6 |
6.5 | Interface graphique + lecteur audio | Non |
numpy |
1.24 | Traitement du signal pour la waveform | Oui |
soundfile |
0.12 | Lecture des fichiers audio (waveform) | Oui |
hid |
1.0.5 | Communication USB HID avec le pédalier | Oui |
Pillow |
9.0 | Génération des icÎnes (compilation uniquement) | Oui |
Sans
numpy/soundfile: la waveform ne s'affiche pas, le reste fonctionne.
Sanshid: le support pédalier est désactivé (avertissement au démarrage).
Installation
Méthode rapide (script automatisé)
git clone https://github.com/h3campus/transcribe-station.git
cd transcribe-station
chmod +x install.sh
./install.sh
Le script install.sh effectue 6 étapes avec sortie colorée :
- Installation des dépendances systÚme (
apt-get) incluantlibhidapietfonts-noto-color-emoji - Création de l'environnement virtuel Python (
.venv/) - Mise Ă jour de
pip - Installation des paquets Python â
PyQt6,numpy,soundfile,hid(avec fallbackhidapi) - Configuration udev pour le pédalier + ajout au groupe
plugdev - Création du script
launch.sh
Méthode manuelle
# 1. Environnement virtuel
python3 -m venv .venv
source .venv/bin/activate
# 2. Dépendances Python
pip install PyQt6 numpy soundfile hid
# 3. Lancer
python transcribe_station.py
Lancement
./launch.sh
# ou
source .venv/bin/activate && python transcribe_station.py
Configuration du pédalier (udev)
Sans rÚgle udev, l'accÚs au périphérique HID nécessite les droits root.
Créer la rÚgle
sudo tee /etc/udev/rules.d/99-olympus-pedal.rules << 'EOF'
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="07b4", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
Ajouter votre utilisateur au groupe plugdev
sudo usermod -aG plugdev $USER
# Déconnectez-vous et reconnectez-vous pour que le groupe soit actif
Vérifier la détection
python3 -c "
import hid
for d in hid.enumerate():
if d['vendor_id'] == 0x07B4:
print(f\"PID={hex(d['product_id'])} {d.get('product_string','?')}\")
"
Ou depuis l'application : PĂ©riphĂ©rique â DĂ©tecter les pĂ©riphĂ©riques.
Correspondance VID/PID
| ModĂšle | Vendor ID | Product ID |
|---|---|---|
| RS27H/N | 0x07B4 |
0x0110 |
| RS28H/N | 0x07B4 |
0x0111 |
| RS31H/N | 0x07B4 |
0x0112 |
â ïž Ces Product IDs sont approximatifs. Utilisez la dĂ©tection automatique puis ajustez dans Outils â ParamĂštres â PĂ©dalier.
Comportement des pédales
| Pédale | Appui court | Maintenu |
|---|---|---|
| Gauche (rewind) | Reculer 3 s | Rembobinage continu â pause auto, reprise au relĂąchĂ© |
| Centre (play) | Lecture / Pause | â |
| Droite (forward) | Avancer 3 s | Avance rapide continue |
Utilisation
Toolbar
| Bouton | Action |
|---|---|
| đ | Ouvrir un dossier (Ctrl+O) |
| â | Ajouter des fichiers (Ctrl+Shift+O) |
| đŸ | Enregistrer la liste (Ctrl+S) |
| âźïž | Aller au dĂ©but (Home) |
| âȘïž | Reculer 3 s (â) |
| â¶ïž | Lecture / Pause (Espace) |
| â©ïž | Avancer 3 s (â) |
| âïž | Aller Ă la fin (End) |
| âčïž | Stop (S) |
| â« | Fichier prĂ©cĂ©dent (Ctrl+â) |
| ⏠| Fichier suivant (Ctrl+â) |
| đ | Muet / Actif (M) |
ââ |
Slider volume (+ / -) |
| âïž | ParamĂštres (Ctrl+,) |
| â | Ă propos |
Ouvrir un dossier
Fichier â Ouvrir un dossier ou Ctrl+O
L'application scanne automatiquement les fichiers audio du dossier.
Un fichier .transcribe_station.json est créé pour mémoriser les statuts.
Lire un fichier
Double-clic sur une ligne du tableau, ou sélection + Espace.
Le statut passe automatiquement Ă En cours Ă l'ouverture.
Changer le statut d'un fichier
Clic droit sur une ligne â Changer le statut
| Couleur | Statut | Description |
|---|---|---|
| đĄ | Ă faire | Non encore traitĂ© |
| đ” | En cours | AppliquĂ© automatiquement Ă l'ouverture |
| âȘ | Suspendu | Traitement interrompu |
| đą | TerminĂ© | Transcription complĂšte |
Sauvegarder
Ctrl+S ou Fichier â Enregistrer la liste.
Sauvegarde automatique également à la fermeture de l'application.
Raccourcis clavier
Transport
| Raccourci | Action |
|---|---|
Espace |
Lecture / Pause |
S |
Stop |
â |
Reculer de 3 s |
â |
Avancer de 3 s |
Home |
Aller au début |
End |
Aller Ă la fin |
Volume & Vitesse
| Raccourci | Action |
|---|---|
+ |
Volume + 10 % |
- |
Volume â 10 % |
M |
Muet / Actif |
] |
Vitesse + (0.5Ă â 2.0Ă) |
[ |
Vitesse â |
Navigation fichiers
| Raccourci | Action |
|---|---|
Ctrl+â |
Fichier précédent dans la liste |
Ctrl+â |
Fichier suivant dans la liste |
Application
| Raccourci | Action |
|---|---|
Ctrl+O |
Ouvrir un dossier |
Ctrl+Shift+O |
Ajouter des fichiers |
Ctrl+S |
Enregistrer la liste |
Ctrl+, |
ParamĂštres |
Ctrl+Q |
Quitter |
Formats audio supportés
| Format | Extension | Waveform | Lecture |
|---|---|---|---|
| WAV | .wav |
â | â |
| MP3 | .mp3 |
â | â |
| FLAC | .flac |
â | â |
| OGG Vorbis | .ogg |
â | â |
| MP4 / M4A | .mp4 .m4a |
â | â |
| Olympus DSS | .dss |
â | â ïž selon codec GStreamer |
| Olympus DS2 | .ds2 |
â | â ïž selon codec GStreamer |
Conversion DSS/DS2 recommandée avant utilisation :
ffmpeg -i fichier.dss fichier.wav
ParamĂštres
Outils â ParamĂštres (Ctrl+,)
Onglet Pédalier
| ParamĂštre | Description |
|---|---|
| Activer le support pédalier | Active/désactive la lecture HID au démarrage |
| ModÚle | Profil VID/PID prédéfini (RS27H/N, RS28H/N, RS31H/N) |
| Vendor ID / Product ID | Valeurs hexadécimales personnalisables |
| Délai rembobinage/avance | Durée du saut clavier en ms (défaut : 3 000 ms) |
| Détecter | Lance la détection des périphériques Olympus connectés |
Onglet Général
| ParamĂštre | Description |
|---|---|
| Auteur par défaut | Pré-rempli pour les nouveaux fichiers importés |
| Lecture auto à la sélection | Lance la lecture dÚs qu'un fichier est sélectionné |
Compilation en binaire
Le script build.py produit un exécutable autonome (PyInstaller --onefile) et installe les raccourcis systÚme sur Linux et Windows.
Prérequis supplémentaires
pip install pyinstaller Pillow
Commandes disponibles
# Build + installation raccourcis (OS auto-détecté)
python build.py
# Build Linux uniquement + raccourci GNOME
python build.py --linux
# Build Windows uniquement + raccourci Menu Démarrer
python build.py --windows
# Les deux (Linux natif + Windows via Wine si disponible)
python build.py --both
# Build sans créer de raccourcis
python build.py --no-install
# Installer le raccourci sans recompiler (binaire déjà présent)
python build.py --install-only
# Supprimer le raccourci GNOME
python build.py --uninstall
# Nettoyer les artefacts (build/ dist/ icon.*)
python build.py --clean
Raccourcis créés â Linux (GNOME)
| ĂlĂ©ment | Emplacement |
|---|---|
| IcĂŽne PNG 256 px | ~/.local/share/icons/hicolor/256x256/apps/TranscribeStation.png |
| Entrée applications | ~/.local/share/applications/TranscribeStation.desktop |
| Raccourci bureau | ~/Bureau/TranscribeStation.desktop |
Le fichier .desktop contient Exec, Icon, Categories=Audio;AudioVideo;, StartupWMClass et Keywords. Les caches update-desktop-database et gtk-update-icon-cache sont mis Ă jour automatiquement.
Raccourcis créés â Windows (Menu DĂ©marrer & Bureau)
| Raccourci | Emplacement |
|---|---|
| Menu Démarrer | %APPDATA%\Microsoft\Windows\Start Menu\Programs\TranscribeStation.lnk |
| Bureau | %USERPROFILE%\Desktop\TranscribeStation.lnk |
Les fichiers .lnk sont créés via PowerShell + WScript.Shell avec l'icÎne embarquée dans l'.exe (IconLocation = exe,0).
En cross-compilation depuis Linux, un script dist/windows/install_shortcut.ps1 est généré pour exécution sur la machine cible :
powershell -ExecutionPolicy Bypass -File dist\windows\install_shortcut.ps1
Build Windows sans Wine (machine Windows native)
Copiez transcribe_station.py + dist/build_windows.bat sur la machine Windows et double-cliquez sur build_windows.bat. Le script fait tout en 4 étapes : dépendances pip, génération icÎne, PyInstaller, raccourcis.
Architecture
transcribe_station.py
â
âââ APP_NAME / APP_VERSION / APP_AUTHOR MĂ©tadonnĂ©es (v1.0.0, Mars 2026)
âââ PEDAL_PROFILES VID/PID RS27H · RS28H · RS31H
âââ COLORS / STYLESHEET ThĂšme sombre centralisĂ©
â
âââ DictationStatus (Enum) TODO / IN_PROGRESS / SUSPENDED / DONE
âââ DictationFile (dataclass) ModĂšle fichier + sĂ©rialisation JSON
â
âââ FootPedalWorker (QThread) Boucle HID non-bloquante, reconnexion auto Ă2 s
âââ WaveformWidget (QWidget) Rendu QPainter, seek par clic souris
âââ PlayerPanel (QWidget) QMediaPlayer + transport + volume + vitesse + pĂ©dalier
â âââ toggle_play / stop_playback / toggle_mute
â âââ volume_up / volume_down / set_volume
â âââ speed_up / speed_down
âââ DictationTable Table + monospace sur colonnes numĂ©riques + menu clic droit
âââ FolderTree (QTreeWidget) Arbre navigation + compteurs statuts (TODO/EN COURS/DONE)
âââ SettingsDialog (QDialog) Onglets PĂ©dalier + GĂ©nĂ©ral
âââ MainWindow (QMainWindow) Orchestration, persistance, raccourcis clavier
âââ _prev_file / _next_file Navigation Ctrl+â/â
âââ _build_toolbar() 14 boutons emoji Noto Color Emoji + slider volume
build.py
âââ generate_icons() icon.png (256 px XDG) + icon.ico (multi-tailles)
âââ build_linux() PyInstaller onefile â dist/linux/
âââ build_windows() PyInstaller windowed â dist/windows/
âââ install_linux_shortcut() .desktop + icĂŽne XDG + Bureau + mise Ă jour caches
âââ install_windows_shortcut() PowerShell WScript.Shell â .lnk Ă2
Source de vĂ©ritĂ© unique : DictationTable._files â toutes les opĂ©rations
(ajout, sauvegarde, stats, affichage) passent par cette seule liste.
Limitations connues
-
DSS/DS2 : formats propriétaires sans codec libre standard. Conversion recommandée :
ffmpeg -i in.dss out.wav -
Waveform : le chargement de fichiers > 200 MB peut bloquer l'UI quelques secondes (pas de thread dédié dans cette version).
-
Reconnaissance vocale : non intĂ©grĂ©e. Compatible avec tout moteur externe (Whisper, Vosk, DeepSpeechâŠ) en copier-coller.
-
Multi-fenĂȘtre : une seule instance par processus.
-
PID pĂ©dalier : les Product IDs inclus sont approximatifs â Ă confirmer avec la dĂ©tection automatique.
Dépannage
Le pédalier n'est pas détecté
# Vérifier que le device USB est visible
lsusb | grep -i "07b4\|olympus"
# Vérifier les permissions hidraw
ls -la /dev/hidraw*
# Tester en root (contournement udev)
sudo python transcribe_station.py
Pas de son
# Vérifier les codecs GStreamer
gst-inspect-1.0 | grep -i "mp3\|wav\|flac"
# Installer les codecs manquants
sudo apt-get install gstreamer1.0-plugins-ugly gstreamer1.0-libav
Les emojis toolbar ne s'affichent pas
sudo apt-get install fonts-noto-color-emoji
# Redémarrer l'application
Erreur Ă l'import de hid
sudo apt-get install libhidapi-dev libhidapi-hidraw0
pip install hid
# Alternative :
pip install hidapi
La waveform ne s'affiche pas
pip install numpy soundfile
Le raccourci GNOME n'apparaĂźt pas dans les applications
update-desktop-database ~/.local/share/applications
gtk-update-icon-cache -f -t ~/.local/share/icons/hicolor
# Déconnectez-vous / reconnectez-vous si nécessaire
Le binaire PyInstaller ne se lance pas
# Vérifier les librairies manquantes
ldd dist/linux/TranscribeStation | grep "not found"
# Lancer avec logs
dist/linux/TranscribeStation 2>&1 | head -50
Licence
MIT â © Mars 2026 H3Campus / JT-Tools by Johnny
Voir LICENSE pour les détails.