QTextToSpeech Class
La classe QTextToSpeech fournit un accès pratique aux moteurs de synthèse vocale. Plus d'informations...
| En-tête : | #include <QTextToSpeech> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS TextToSpeech)target_link_libraries(mytarget PRIVATE Qt6::TextToSpeech) |
| qmake : | QT += texttospeech |
| Héritages : | QObject |
Types publics
| enum class | BoundaryHint { Default, Immediate, Word, Sentence, Utterance } |
| flags | Capabilities |
(since 6.6) enum class | Capability { None, Speak, PauseResume, WordByWordProgress, Synthesize } |
| enum class | ErrorReason { NoError, Initialization, Configuration, Input, Playback } |
| enum | State { Ready, Speaking, Synthesizing, Paused, Error } |
Propriétés
|
Fonctions publiques
| QTextToSpeech(QObject *parent = nullptr) | |
| QTextToSpeech(const QString &engine, QObject *parent = nullptr) | |
(since 6.4) | QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent = nullptr) |
| virtual | ~QTextToSpeech() override |
| QList<QLocale> | availableLocales() const |
| QList<QVoice> | availableVoices() const |
| QString | engine() const |
| QTextToSpeech::Capabilities | engineCapabilities() const |
| QTextToSpeech::ErrorReason | errorReason() const |
| QString | errorString() const |
(since 6.6) QList<QVoice> | findVoices(Args &&... args) const |
| QLocale | locale() const |
| double | pitch() const |
| double | rate() const |
(since 6.4) bool | setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap()) |
| QTextToSpeech::State | state() const |
(since 6.6) void | synthesize(const QString &text, Functor &&functor) |
(since 6.6) void | synthesize(const QString &text, const QObject *context, Functor &&functor) |
| QVoice | voice() const |
| double | volume() const |
Emplacements publics
(since 6.6) qsizetype | enqueue(const QString &utterance) |
| void | pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default) |
| void | resume() |
| void | say(const QString &text) |
| void | setLocale(const QLocale &locale) |
| void | setPitch(double pitch) |
| void | setRate(double rate) |
| void | setVoice(const QVoice &voice) |
| void | setVolume(double volume) |
| void | stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default) |
Signaux
(since 6.6) void | aboutToSynthesize(qsizetype id) |
| void | engineChanged(const QString &engine) |
| void | errorOccurred(QTextToSpeech::ErrorReason reason, const QString &errorString) |
| void | localeChanged(const QLocale &locale) |
| void | pitchChanged(double pitch) |
| void | rateChanged(double rate) |
(since 6.6) void | sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length) |
| void | stateChanged(QTextToSpeech::State state) |
| void | voiceChanged(const QVoice &voice) |
| void | volumeChanged(double volume) |
Membres publics statiques
| QStringList | availableEngines() |
Description détaillée
Utilisez say() pour lancer la lecture d'un texte sur le périphérique audio par défaut, et stop(), pause() et resume() pour contrôler la lecture du texte.
connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{ m_speech->say(ui.plainTextEdit->toPlainText()); }); connect(ui.stopButton, &QPushButton::clicked, m_speech, [this]{ m_speech->stop(); }); connect(ui.pauseButton, &QPushButton::clicked, m_speech, [this]{ m_speech->pause(); }); connect(ui.resumeButton, &QPushButton::clicked, m_speech, &QTextToSpeech::resume);
Pour synthétiser le texte en données PCM en vue d'un traitement ultérieur, utilisez synthesize().
Utilisez findVoices() pour obtenir une liste des voix correspondantes ou utilisez availableVoices() pour obtenir la liste des voix qui prennent en charge les paramètres linguistiques actuels. Modifiez la propriété locale en utilisant l'un des availableLocales() qui correspond à la langue du texte d'entrée et à l'accent de la sortie vocale souhaitée. Cela modifiera la liste des voix disponibles sur la plupart des plates-formes. Utilisez ensuite l'une des voix disponibles dans un appel à setVoice().
Tous les moteurs ne prennent pas en charge toutes les fonctionnalités. Utilisez la fonction engineCapabilities() pour tester les fonctionnalités disponibles et adaptez l'utilisation de la classe en conséquence.
Remarque : les langues et les voix prises en charge par le moteur dépendent généralement de la configuration du système d'exploitation. Par exemple, sur macOS, les utilisateurs finaux peuvent installer les voix via le panneau Accessibilité des préférences système.
Documentation sur les types de membres
enum class QTextToSpeech::BoundaryHint
décrit quand la parole doit être arrêtée et mise en pause.
| Constante | Valeur | Description |
|---|---|---|
QTextToSpeech::BoundaryHint::Default | 0 | Utilise le comportement par défaut spécifique au moteur. |
QTextToSpeech::BoundaryHint::Immediate | 1 | Le moteur doit arrêter la lecture immédiatement. |
QTextToSpeech::BoundaryHint::Word | 2 | Arrêter la lecture lorsque le mot en cours est terminé. |
QTextToSpeech::BoundaryHint::Sentence | 3 | Arrêter la lecture lorsque la phrase en cours est terminée. |
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6) | 4 | Arrêter la lecture lorsque l'énoncé en cours est terminé. Un énoncé est le bloc de texte utilisé dans un appel à say() ou enqueue(). |
Remarque : il s'agit d'indications données au moteur. Il se peut que le moteur actuel ne prenne pas en charge toutes les options.
[since 6.6] enum class QTextToSpeech::Capability
flags QTextToSpeech::Capabilities
Cette enum décrit les capacités d'un moteur de synthèse vocale.
| Constante | Valeur | Description |
|---|---|---|
QTextToSpeech::Capability::None | 0 | Le moteur n'implémente aucune des capacités. |
QTextToSpeech::Capability::Speak | 1 << 0 | Le moteur peut lire une sortie audio à partir d'un texte. |
QTextToSpeech::Capability::PauseResume | 1 << 1 | Le moteur peut mettre en pause puis reprendre la sortie audio. |
QTextToSpeech::Capability::WordByWordProgress | 1 << 2 | Le moteur émet le signal sayingWord() pour chaque mot prononcé. |
QTextToSpeech::Capability::Synthesize | 1 << 3 | Le moteur peut synthesize données audio PCM à partir d'un texte. |
Cette liste a été introduite dans Qt 6.6.
Le type Capabilities est un typedef pour QFlags<Capability>. Il stocke une combinaison OU de valeurs de capacités.
Voir également engineCapabilities().
enum class QTextToSpeech::ErrorReason
Cette énumération décrit l'erreur actuelle, le cas échéant, du moteur QTextToSpeech.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QTextToSpeech::ErrorReason::NoError | 0 | Aucune erreur n'est survenue. |
QTextToSpeech::ErrorReason::Initialization | 1 | Le backend n'a pas pu être initialisé, par exemple en raison d'un pilote manquant ou d'une exigence du système d'exploitation. |
QTextToSpeech::ErrorReason::Configuration | 2 | La configuration du backend est incohérente, par exemple en raison d'un nom de voix ou de paramètres erronés. |
QTextToSpeech::ErrorReason::Input | 3 | Le texte donné n'a pas pu être synthétisé, par exemple en raison d'une taille ou de caractères non valides. |
QTextToSpeech::ErrorReason::Playback | 4 | La lecture audio a échoué, par exemple en raison d'un périphérique audio manquant, d'un format incorrect ou d'une interruption du flux audio. |
Utilisez errorReason() pour obtenir l'erreur actuelle et errorString() pour obtenir le message d'erreur correspondant.
Voir aussi errorOccurred().
enum QTextToSpeech::State
Cette énumération décrit l'état actuel du moteur de synthèse vocale.
| Constante | Valeur | Description de l'état |
|---|---|---|
QTextToSpeech::Ready | 0 | Le synthétiseur est prêt à commencer un nouveau texte. C'est également l'état dans lequel se trouve le synthétiseur après la fin d'un texte. |
QTextToSpeech::Speaking | 1 | Le texte est en train d'être prononcé. |
QTextToSpeech::Synthesizing | 4 | Le texte est synthétisé en données PCM. Le signal synthesized() sera émis avec des morceaux de données. |
QTextToSpeech::Paused | 2 | La synthèse a été interrompue et peut être reprise avec resume(). |
QTextToSpeech::Error | 3 | Une erreur s'est produite. Les détails sont donnés par errorReason(). |
Voir aussi QTextToSpeech::ErrorReason, errorReason(), et errorString().
Documentation sur les propriétés
[since 6.4] engine : QString
Cette propriété indique le moteur utilisé pour synthétiser le texte en parole.
Le changement de moteur interrompt toute synthèse vocale en cours.
Sur la plupart des plates-formes, le changement de moteur met à jour la liste de available locales et available voices.
Cette propriété a été introduite dans Qt 6.4.
Fonctions d'accès :
| QString | engine() const | |
| bool | setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap()) | [see note below] |
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Signal du notificateur :
| void | engineChanged(const QString &engine) |
[read-only, since 6.6] engineCapabilities : Capabilities
Cette propriété contient les capacités mises en œuvre par le moteur actuel
Cette propriété a été introduite dans Qt 6.6.
Fonctions d'accès :
| QTextToSpeech::Capabilities | engineCapabilities() const |
Notifier signal :
| void | engineChanged(const QString &engine) |
Voir aussi engine.
locale : QLocale
Cette propriété indique les paramètres linguistiques actuellement utilisés.
Par défaut, les paramètres linguistiques du système sont utilisés.
Sur certaines plates-formes, le changement de paramètres régionaux met à jour la liste de available voices, et si la voix actuelle n'est pas disponible avec les nouveaux paramètres régionaux, une nouvelle voix est définie.
Fonctions d'accès :
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
Signal de notification :
| void | localeChanged(const QLocale &locale) |
Voir aussi voice et findVoices().
pitch : double
Cette propriété contient la hauteur de la voix, allant de -1.0 à 1.0.
La valeur par défaut de 0,0 correspond à la hauteur normale de la voix.
Fonctions d'accès :
| double | pitch() const |
| void | setPitch(double pitch) |
Signal du notificateur :
| void | pitchChanged(double pitch) |
rate : double
Cette propriété contient le débit vocal actuel, compris entre -1.0 et 1.0.
La valeur par défaut de 0.0 correspond à un débit vocal normal.
Fonctions d'accès :
| double | rate() const |
| void | setRate(double rate) |
Signal de notification :
| void | rateChanged(double rate) |
[read-only] state : State
Cette propriété contient l'état actuel du synthétiseur vocal.
void MainWindow::stateChanged(QTextToSpeech::State state) { switch (state) { case QTextToSpeech::Speaking: ui.statusbar->showMessage(tr("Speech started...")); break; case QTextToSpeech::Ready: ui.statusbar->showMessage(tr("Speech stopped..."), 2000); break; case QTextToSpeech::Paused: ui.statusbar->showMessage(tr("Speech paused...")); break; default: ui.statusbar->showMessage(tr("Speech error!")); break; } ui.pauseButton->setEnabled(state == QTextToSpeech::Speaking); ui.resumeButton->setEnabled(state == QTextToSpeech::Paused); ui.stopButton->setEnabled(state == QTextToSpeech::Speaking || state == QTextToSpeech::Paused); }
Utilisez say() pour commencer à synthétiser du texte à l'aide de voice et locale.
Fonctions d'accès :
| QTextToSpeech::State | state() const |
Signal de notification :
| void | stateChanged(QTextToSpeech::State state) |
voice : QVoice
Cette propriété contient la voix qui sera utilisée pour le discours.
La voix doit être l'une des voices available du moteur.
Sur certaines plateformes, la définition de la voix modifie d'autres attributs de la voix tels que locale, pitch, etc. Ces changements déclenchent l'émission de signaux.
Fonctions d'accès :
| QVoice | voice() const |
| void | setVoice(const QVoice &voice) |
Signal Notifier :
| void | voiceChanged(const QVoice &voice) |
Voir aussi findVoices().
volume : double
Cette propriété contient le volume actuel, compris entre 0,0 et 1,0.
La valeur par défaut est le volume par défaut de la plate-forme.
Fonctions d'accès :
| double | volume() const |
| void | setVolume(double volume) |
Signal Notificateur :
| void | volumeChanged(double volume) |
Fonction membre Documentation
[explicit] QTextToSpeech::QTextToSpeech(QObject *parent = nullptr)
Charge un moteur de synthèse vocale à partir d'un plug-in qui utilise le moteur par défaut et construit un objet QTextToSpeech en tant qu'enfant de parent.
Le moteur par défaut est spécifique à la plate-forme.
Si le moteur s'initialise correctement, l'adresse state du moteur devient QTextToSpeech::Ready; notez que cela peut se produire de manière asynchrone. Si le plugin ne parvient pas à se charger, alors state sera remplacé par QTextToSpeech::Error.
Voir aussi availableEngines().
[explicit] QTextToSpeech::QTextToSpeech(const QString &engine, QObject *parent = nullptr)
Charge un moteur de synthèse vocale à partir d'un plug-in correspondant au paramètre engine et construit un objet QTextToSpeech en tant qu'enfant de parent.
Si engine est vide, le moteur par défaut du plug-in est utilisé. Le moteur par défaut est spécifique à la plate-forme.
Si le moteur s'initialise correctement, l'adresse state du moteur sera fixée à QTextToSpeech::Ready. Si le plugin ne se charge pas ou si le moteur ne s'initialise pas, l'adresse state du moteur sera fixée à QTextToSpeech::Error.
Voir aussi availableEngines().
[explicit, since 6.4] QTextToSpeech::QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent = nullptr)
Charge un moteur de synthèse vocale à partir d'un plug-in correspondant au paramètre engine et construit un objet QTextToSpeech en tant qu'enfant de parent, en transmettant params au moteur.
Si engine est vide, le moteur par défaut est utilisé. Le moteur par défaut est spécifique à la plate-forme. Les paires clé/valeur de params qui sont prises en charge dépendent du moteur. Voir la documentation du moteur pour plus de détails. Les entrées non prises en charge sont ignorées.
Si le moteur s'initialise correctement, la valeur state du moteur est fixée à QTextToSpeech::Ready. Si le plugin ne se charge pas ou si le moteur ne s'initialise pas, la valeur state du moteur est fixée à QTextToSpeech::Error.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi availableEngines().
[override virtual noexcept] QTextToSpeech::~QTextToSpeech()
Détruit l'objet QTextToSpeech, interrompant toute parole.
[signal, since 6.6] void QTextToSpeech::aboutToSynthesize(qsizetype id)
Ce signal est émis juste avant que le moteur ne commence à synthétiser le son de la parole pour id. id est la valeur renvoyée par un appel à enqueue(). Les applications peuvent utiliser ce signal pour apporter des modifications de dernière minute aux attributs de voice, ou pour suivre le processus du texte mis en file d'attente via enqueue().
Cette fonction a été introduite dans Qt 6.6.
Voir également enqueue(), synthesize() et voice.
[static invokable] QStringList QTextToSpeech::availableEngines()
Obtient la liste des modules d'extension de moteur de synthèse vocale pris en charge.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également engine.
[invokable] QList<QLocale> QTextToSpeech::availableLocales() const
Renvoie la liste des locales prises en charge par le site engine actif.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également availableVoices() et findVoices().
[invokable] QList<QVoice> QTextToSpeech::availableVoices() const
Renvoie la liste des voix disponibles pour la langue actuelle locale.
Note : Si aucune locale n'a été définie, c'est la locale du système qui est utilisée.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également availableLocales() et findVoices().
[slot, since 6.6] qsizetype QTextToSpeech::enqueue(const QString &utterance)
Ajoute utterance à la file d'attente des textes à prononcer, et commence à prononcer. Renvoie l'index du texte dans la file d'attente, ou -1 en cas d'erreur.
Si l'adresse state du moteur est actuellement Ready, utterance sera prononcé immédiatement. Sinon, le moteur commencera à prononcer utterance une fois qu'il aura fini de prononcer le texte en cours.
Chaque fois que le moteur passe à l'entrée de texte suivante dans la file d'attente, le signal aboutToSynthesize() est émis. Cela permet aux applications de suivre la progression et d'apporter des modifications de dernière minute aux attributs vocaux.
L'appel à stop() efface la file d'attente. Pour mettre le moteur en pause à la fin d'un texte, utilisez l'indice de limite Utterance.
Cette fonction a été introduite dans Qt 6.6.
Voir aussi say(), stop(), aboutToSynthesize() et synthesize().
[signal] void QTextToSpeech::errorOccurred(QTextToSpeech::ErrorReason reason, const QString &errorString)
Ce signal est émis lorsqu'une erreur s'est produite et que le paramètre state a été défini sur QTextToSpeech::Error. Le paramètre reason spécifie le type d'erreur et le paramètre errorString fournit une description de l'erreur lisible par l'homme.
QTextToSpeech::ErrorReason n'est pas un métatype enregistré, donc pour les connexions en file d'attente, vous devrez l'enregistrer avec Q_DECLARE_METATYPE() et qRegisterMetaType().
Voir aussi errorReason(), errorString(), et Créer des types Qt personnalisés.
[invokable] QTextToSpeech::ErrorReason QTextToSpeech::errorReason() const
Renvoie la raison pour laquelle le moteur a signalé une erreur.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également state et errorOccurred().
[invokable] QString QTextToSpeech::errorString() const
Renvoie le message d'erreur actuel du moteur.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également errorOccurred().
[since 6.6] template <typename... Args> QList<QVoice> QTextToSpeech::findVoices(Args &&... args) const
Renvoie la liste des voix qui correspondent aux critères de args.
Les arguments de args sont traités afin d'assembler la liste des voix qui correspondent à tous les arguments. Un argument de type QString est confronté au name de la voix, un argument de type QLocale est confronté au locale de la voix, etc. Il est possible de ne spécifier que les Language ou Territory des voix souhaitées, et le nom peut être comparé à un regular expression.
Cette fonction renvoie toutes les voix si la liste des critères est vide. Il n'est pas possible d'utiliser plusieurs critères du même type, ce qui entraînera une erreur de compilation.
Remarque : à moins que args n'inclue la version actuelle de locale, cette fonction devra peut-être modifier les paramètres linguistiques du moteur pour obtenir la liste de toutes les voix. Ceci est spécifique au moteur, mais peut avoir un impact sur la synthèse vocale en cours. Il est donc conseillé de ne pas appeler cette fonction à moins que state ne soit Ready.
Cette fonction a été introduite dans Qt 6.6.
Voir aussi availableVoices().
[slot] void QTextToSpeech::pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)
Interrompt le discours en cours à l'adresse boundaryHint.
Le respect de boundaryHint dépend de engine.
Voir également resume() et PauseResume.
[slot] void QTextToSpeech::resume()
Reprendre la parole après l'appel de pause().
Remarque : sur Android, la reprise d'une conversation interrompue recommence depuis le début. Il s'agit d'une limitation du moteur de synthèse vocale sous-jacent.
Voir également pause().
[slot] void QTextToSpeech::say(const QString &text)
Commence à prononcer le texte text.
Cette fonction commence à synthétiser la parole de manière asynchrone et lit le texte sur le périphérique de sortie audio par défaut.
connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{ m_speech->say(ui.plainTextEdit->toPlainText()); });
Remarque : toutes les lectures en cours sont interrompues avant de commencer à lire le texte récemment synthétisé.
L'état actuel est disponible à l'aide de la propriété state et prend la valeur Speaking lorsque la lecture commence. Lorsque la lecture est terminée, state est remplacé par Ready.
Voir aussi enqueue(), stop(), pause(), resume() et synthesize().
[signal, since 6.6] void QTextToSpeech::sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length)
Ce signal est émis lorsque la tranche de texte word, indiquée par start et length dans l'énoncé id, est jouée sur le périphérique audio.
Remarque : ce signal nécessite que le moteur ait la capacité WordByWordProgress.
Cette fonction a été introduite dans Qt 6.6.
Voir aussi Capability et say().
[invokable, since 6.4] bool QTextToSpeech::setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap())
Définit le moteur utilisé par cet objet QTextToSpeech à engine, en passant params au constructeur du moteur.
Retourne si engine a pu être défini avec succès.
Les paires clé/valeur prises en charge dans params dépendent du moteur. Voir la documentation du moteur pour plus de détails. Les entrées non prises en charge seront ignorées.
Remarque : cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Note : Fonction de définition de la propriété engine.
Cette fonction a été introduite dans Qt 6.4.
Voir également engine().
[slot] void QTextToSpeech::stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)
Arrête la lecture en cours à l'adresse boundaryHint, et vide la file d'attente des textes en attente.
La lecture ne peut pas être reprise. Le respect de boundaryHint dépend du moteur.
Voir aussi say(), enqueue() et pause().
[since 6.6] template <typename Functor> void QTextToSpeech::synthesize(const QString &text, Functor &&functor)
[since 6.6] template <typename Functor> void QTextToSpeech::synthesize(const QString &text, const QObject *context, Functor &&functor)
Synthétise le site text en données audio brutes.
Cette fonction synthétise la parole de manière asynchrone en données audio brutes. Lorsque les données sont disponibles, la fonction functor sera appelée en tant que functor(QAudioFormat format, QByteArray bytes), avec format décrivant la format des données dans bytes; ou en tant que functor(QAudioBuffer &buffer).
La propriété state est définie sur Synthesizing lorsque la synthèse commence, et sur Ready lorsque la synthèse est terminée. Au cours de la synthèse, la propriété functor peut être appelée plusieurs fois, éventuellement avec des valeurs changeantes pour format.
Le functor peut être un appelable, comme une fonction lambda ou libre, avec un objet context optionnel :
tts.synthesize("Hello world", [](const QAudioFormat &format, const QByteArray &bytes){ // process data according to format });
ou une fonction membre de l'objet context:
struct PCMProcessor : QObject { void processData(const QAudioFormat &format, const QByteArray &bytes) { // process data according to format } } processor; tts.synthesize("Hello world", &processor, &PCMProcessor::processData);
Si context est détruit, la fonction functor ne sera plus appelée.
Remarque : cette API nécessite que le moteur ait la capacité Synthesize.
Ces fonctions ont été introduites dans Qt 6.6.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.