1. Description du projet PyQt5 OpenAi
Dans ce projet, nous allons voir comment utiliser Python et l’API OpenAI pour réaliser une application simple de synthèse vocale (Text-to-Speech).
L’objectif est de concevoir une interface graphique avec PyQt5 (créée à l’aide de Qt Designer) qui permet :
- de saisir un texte ;
- de choisir une voix parmi plusieurs proposées ;
- puis de convertir ce texte en un fichier audio grâce au modèle gpt-4o-mini-tts de l’API OpenAI.
Ce projet combine donc trois aspects essentiels :
- Création d’interfaces graphiques avec PyQt5,
- Utilisation d’outils de conversion d’interface pyuic5
- Interaction avec une API externe (OpenAI) pour générer automatiquement un fichier audio à partir de texte.
Au terme de ce projet, vous aurez mis en pratique :
- la conception d’une fenêtre avec Qt Designer,
- l’importation de cette interface dans un script Python,
- et l’intégration d’un service d'IA moderne dans une application graphique.
2. Création de l’interface avec Qt Designer
- Ouvrir Qt Designer → créer un nouveau Widget.
- Ajouter les éléments suivants :
- QComboBox : objectName = combo_voice. Et y insérer les voix : alloy, echo, fable, onyx, nova, shimmer, coral, verse, ballad, ash
- QTextEdit : objectName = inputTextEdit
- QPushButton : objectName = btn_convert (texte : Convert To sound)
- QLabel (optionnel) : objectName = statusLabel (pour afficher les messages)
- Enregistrer le fichier sous app.ui.
3. Génération du fichier Python de l’UI
Tapez dans le terminal:
1 |
pyuic5 -x app.ui -o app.py |
Cela génère app.py qui contient la classe principale de l'interface utilisateur: Ui_Form.
4. Script principal main.py
Voici le fichier main.py:
Remarque
L’utilisateur doit remplacer la valeur de OPENAI_KEY par sa propre clé personnelle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
from app import * import sys from openai import OpenAI # --- Placez votre clé api d'openai ici --- OPENAI_KEY = "your API KEY here !" client = OpenAI(api_key=OPENAI_KEY) def convert(): # Getting input text content T = ui.inputTextEdit.toPlainText() print(T) # choose voice from: 'alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer', 'coral', 'verse', 'ballad', 'ash' selected_voice = ui.combo_voice.currentText() speech = client.audio.speech.create( model = "gpt-4o-mini-tts", voice = selected_voice, input= T ) with open ("output/sortie.wav", "wb") as f: f.write(speech.read()) app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) ui.btn_convert.clicked.connect(convert) Form.show() sys.exit(app.exec_()) |
5. Organisation du projet
1 2 3 4 5 6 7 8 9 10 |
TEXTS_TO_VOICE/ ├─ app.ui ├─ app.py # généré par: pyuic5 -x app.ui -o app.py ├─ main.py # votre logique + chargement des icônes ├─ img/ # icônes UI │ ├─ arrow.png │ ├─ sound.png │ └─ text.png └─ output/ └─ sortie.wav # fichier audio généré |
Younes Derfoufi
CRMEF OUJDA