Sur cette page

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 &params, 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 &params = 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.

ConstanteValeurDescription
QTextToSpeech::BoundaryHint::Default0Utilise le comportement par défaut spécifique au moteur.
QTextToSpeech::BoundaryHint::Immediate1Le moteur doit arrêter la lecture immédiatement.
QTextToSpeech::BoundaryHint::Word2Arrêter la lecture lorsque le mot en cours est terminé.
QTextToSpeech::BoundaryHint::Sentence3Arrêter la lecture lorsque la phrase en cours est terminée.
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6)4Arrê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.

ConstanteValeurDescription
QTextToSpeech::Capability::None0Le moteur n'implémente aucune des capacités.
QTextToSpeech::Capability::Speak1 << 0Le moteur peut lire une sortie audio à partir d'un texte.
QTextToSpeech::Capability::PauseResume1 << 1Le moteur peut mettre en pause puis reprendre la sortie audio.
QTextToSpeech::Capability::WordByWordProgress1 << 2Le moteur émet le signal sayingWord() pour chaque mot prononcé.
QTextToSpeech::Capability::Synthesize1 << 3Le 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.

ConstanteValeurDescription de l'erreur
QTextToSpeech::ErrorReason::NoError0Aucune erreur n'est survenue.
QTextToSpeech::ErrorReason::Initialization1Le 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::Configuration2La configuration du backend est incohérente, par exemple en raison d'un nom de voix ou de paramètres erronés.
QTextToSpeech::ErrorReason::Input3Le texte donné n'a pas pu être synthétisé, par exemple en raison d'une taille ou de caractères non valides.
QTextToSpeech::ErrorReason::Playback4La 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.

ConstanteValeurDescription de l'état
QTextToSpeech::Ready0Le 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::Speaking1Le texte est en train d'être prononcé.
QTextToSpeech::Synthesizing4Le texte est synthétisé en données PCM. Le signal synthesized() sera émis avec des morceaux de données.
QTextToSpeech::Paused2La synthèse a été interrompue et peut être reprise avec resume().
QTextToSpeech::Error3Une 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 &params = 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 &params, 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 &params = 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.

Voir aussi say() et stop().

© 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.