Sur cette page

QTextToSpeech Class

La classe QTextToSpeech offre un accès pratique aux moteurs de synthèse vocale. En savoir plus...

En-tête : #include <QTextToSpeech>
CMake : find_package(Qt6 REQUIRED COMPONENTS TextToSpeech)
target_link_libraries(mytarget PRIVATE Qt6::TextToSpeech)
qmake : QT += texttospeech
Hérite de : 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 la fonction say() pour lancer la lecture d'un texte sur le périphérique audio par défaut, puis les fonctions stop(), pause() et resume() pour contrôler la lecture de ce 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 du texte en données PCM en vue d'un traitement ultérieur, utilisez la méthode synthesize().

Utilisez findVoices() pour obtenir une liste des voix correspondantes, ou utilisez availableVoices() pour obtenir la liste des voix prenant en charge les paramètres régionaux actuels. Modifiez la propriété locale en utilisant l’une des fonctions availableLocales() qui correspond le mieux à la langue du texte d’entrée et à l’accent de la voix de sortie souhaitée. Cela modifiera la liste des voix disponibles sur la plupart des plateformes. Utilisez ensuite l’une des voix disponibles dans un appel à la fonction ` setVoice()` ().

Tous les moteurs ne prennent pas en charge l’ensemble des fonctionnalités. Utilisez la fonction ` engineCapabilities()` pour vérifier quelles fonctionnalités sont disponibles, puis adaptez l’utilisation de la classe en conséquence.

Remarque : les paramètres régionaux et les voix pris en charge par le moteur dépendent généralement de la configuration du système d’exploitation. Par exemple, sous macOS, les utilisateurs finaux peuvent installer des voix via le panneau « Accessibilité » dans les Préférences Système.

Documentation sur les types de membres

enum class QTextToSpeech::BoundaryHint

indique à quel moment il faut interrompre et marquer une pause dans le discours.

ConstanteValeurDescription
QTextToSpeech::BoundaryHint::Default0Utilise le comportement par défaut spécifique au moteur.
QTextToSpeech::BoundaryHint::Immediate1Le moteur doit arrêter immédiatement la lecture.
QTextToSpeech::BoundaryHint::Word2Arrête la lecture lorsque le mot en cours est terminé.
QTextToSpeech::BoundaryHint::Sentence3Arrête la lecture lorsque la phrase en cours est terminée.
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6)4Arrête 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 destinées au moteur. Le moteur utilisé ne prend peut-être pas en charge toutes ces options.

[since 6.6] enum class QTextToSpeech::Capability
flags QTextToSpeech::Capabilities

Cette énumération décrit les capacités d'un moteur de synthèse vocale.

ConstanteValeurDescription
QTextToSpeech::Capability::None0Le moteur ne prend en charge aucune de ces fonctionnalités.
QTextToSpeech::Capability::Speak1 << 0Le moteur peut reproduire une sortie audio à partir d'un texte.
QTextToSpeech::Capability::PauseResume1 << 1Le moteur peut mettre en pause puis reprendre la lecture audio.
QTextToSpeech::Capability::WordByWordProgress1 << 2Le moteur émet le signal sayingWord() pour chaque mot prononcé.
QTextToSpeech::Capability::Synthesize1 << 3Le moteur peut générer des données audio PCM à partir de texte via la fonction ` synthesize `.

Cette énumération a été introduite dans Qt 6.6.

Le type Capabilities est un typedef pour QFlags<Capability>. Il stocke une combinaison OR de valeurs Capability.

Voir également engineCapabilities().

enum class QTextToSpeech::ErrorReason

Cette énumération décrit l'erreur actuelle, le cas échéant, du moteur « QTextToSpeech ».

ConstanteValeurDescription
QTextToSpeech::ErrorReason::NoError0Aucune erreur ne s'est produite.
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 fournie est incohérente, par exemple en raison d'un nom de voix ou de paramètres incorrects.
QTextToSpeech::ErrorReason::Input3Le texte fourni 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 également errorOccurred().

enum QTextToSpeech::State

Cette énumération décrit l'état actuel du moteur de synthèse vocale.

ConstanteValeurDescription
QTextToSpeech::Ready0Le synthétiseur est prêt à lire un nouveau texte. C'est également l'état dans lequel il se trouve une fois la lecture d'un texte terminée.
QTextToSpeech::Speaking1Le texte est en cours de synthèse.
QTextToSpeech::Synthesizing4Le texte est en cours de synthèse en données PCM. Le signal synthesized() sera émis par blocs de données.
QTextToSpeech::Paused2La synthèse a été mise en pause et peut être reprise avec la fonction ` resume()`.
QTextToSpeech::Error3Une erreur s'est produite. Les détails sont fournis par la fonction ` errorReason()`.

Voir également QTextToSpeech::ErrorReason, errorReason() et errorString().

Documentation sur les propriétés

[since 6.4] engine : QString

Cette propriété contient le moteur utilisé pour la synthèse vocale.

La modification du moteur interrompt toute lecture en cours.

Sur la plupart des plateformes, la modification du moteur entraîne la mise à jour de la liste des available locales et available voices.

Cette énumération 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]

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

Signal de notification :

void engineChanged(const QString &engine)

[read-only, since 6.6] engineCapabilities : Capabilities

Cette propriété contient les fonctionnalités implémentées par le moteur actuel

Cette énumération a été introduite dans Qt 6.6.

Fonctions d'accès :

QTextToSpeech::Capabilities engineCapabilities() const

Signal de notification :

void engineChanged(const QString &engine)

Voir également engine.

locale : QLocale

Cette propriété contient les paramètres régionaux actuellement utilisés.

Par défaut, c'est la locale système qui est utilisée.

Sur certaines plateformes, la modification des paramètres régionaux entraîne la mise à jour de la liste des available voices. Si la voix actuelle n'est pas disponible avec les nouveaux paramètres régionaux, une nouvelle voix sera définie.

Fonctions d'accès :

QLocale locale() const
void setLocale(const QLocale &locale)

Signal de notification :

void localeChanged(const QLocale &locale)

Voir également voice et findVoices().

pitch : double

Cette propriété définit la hauteur de la voix, comprise entre -1,0 et 1,0.

La valeur par défaut, 0,0, correspond à la hauteur de la voix normale.

Fonctions d'accès :

double pitch() const
void setPitch(double pitch)

Signal de notification :

void pitchChanged(double pitch)

rate : double

Cette propriété contient la vitesse d'élocution actuelle, comprise entre -1,0 et 1,0.

La valeur par défaut, 0,0, correspond à un débit de parole 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 la méthode say() pour lancer la synthèse du texte avec les paramètres actuels voice et locale.

Fonctions d'accès :

QTextToSpeech::State state() const

Signal de notification :

void stateChanged(QTextToSpeech::State state)

voice : QVoice

Cette propriété définit la voix qui sera utilisée pour la synthèse vocale.

La voix doit faire partie de la liste des voix disponibles pour le moteur ( voices available ).

Sur certaines plateformes, la définition de la voix modifie d’autres attributs vocaux tels que « locale », « pitch », etc. Ces modifications déclenchent l’émission de signaux.

Fonctions d’accès :

QVoice voice() const
void setVoice(const QVoice &voice)

Signal de notification :

void voiceChanged(const QVoice &voice)

Voir également findVoices().

volume : double

Cette propriété contient le volume actuel, compris entre 0,0 et 1,0.

La valeur par défaut correspond au volume par défaut de la plateforme.

Fonctions d'accès :

double volume() const
void setVolume(double volume)

Signal de notification :

void volumeChanged(double volume)

Documentation des fonctions membres

[explicit] QTextToSpeech::QTextToSpeech(QObject *parent = nullptr)

Charge un moteur de synthèse vocale à partir d'un plug-in qui utilise le plug-in du moteur par défaut et crée un objet `QTextToSpeech` en tant qu'enfant de ` parent`.

Le moteur par défaut dépend de la plate-forme.

Si le moteur s'initialise correctement, l'state du moteur passe alors à QTextToSpeech::Ready; notez que cela peut se produire de manière asynchrone. Si le chargement du plug-in échoue, state est alors défini sur QTextToSpeech::Error.

Voir également 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 crée un objet QTextToSpeech en tant qu'enfant de parent.

Si engine est vide, le plug-in de moteur par défaut est utilisé. Le moteur par défaut dépend de la plate-forme.

Si le moteur s’initialise correctement, la propriété ` state ` du moteur sera définie sur ` QTextToSpeech::Ready`. Si le chargement du plug-in échoue ou si le moteur ne parvient pas à s’initialiser, la propriété ` state ` du moteur sera définie sur ` QTextToSpeech::Error`.

Voir également 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 crée un objet QTextToSpeech en tant qu’enfant de parent, en transmettant params au moteur.

Si engine est vide, le plug-in de moteur par défaut est utilisé. Le moteur par défaut dépend de la plateforme. Les paires clé/valeur prises en charge dans params dépendent du moteur. Consultez la documentation du moteur pour plus de détails. Les entrées non prises en charge seront ignorées.

Si le moteur s'initialise correctement, la propriété ` state ` du moteur sera définie sur ` QTextToSpeech::Ready`. Si le chargement du plug-in échoue, ou si le moteur ne parvient pas à s'initialiser, la propriété ` state ` du moteur sera définie sur ` QTextToSpeech::Error`.

Cette fonction a été introduite dans Qt 6.4.

Voir également availableEngines().

[override virtual noexcept] QTextToSpeech::~QTextToSpeech()

Détruit cet objet « QTextToSpeech », mettant ainsi fin à toute prise de parole.

[signal, since 6.6] void QTextToSpeech::aboutToSynthesize(qsizetype id)

Ce signal est émis juste avant que le moteur ne commence à synthétiser le flux audio pour id. L'id correspond à 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 traitement 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()

Récupère la liste des plug-ins de synthèse vocale pris en charge.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

Voir également engine.

[invokable] QList<QLocale> QTextToSpeech::availableLocales() const

Renvoie la liste des paramètres régionaux pris en charge par l'engine e actif.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

Voir également ` availableVoices()` et ` findVoices()`.

[invokable] QList<QVoice> QTextToSpeech::availableVoices() const

Renvoie la liste des voix disponibles pour l'locale ion en cours.

Remarque : si aucune locale n’a été définie, c’est la locale système qui est utilisée.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis 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 à lire à voix haute, puis lance la lecture. Renvoie l'index du texte dans la file d'attente, ou -1 en cas d'erreur.

Si l'state du moteur est actuellement « Ready », « utterance » sera lu immédiatement. Sinon, le moteur commencera à lire « utterance » une fois qu'il aura fini de lire 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 de stop() vide la file d'attente. Pour mettre le moteur en pause à la fin d'un texte, utilisez l'indicateur de limite « Utterance ».

Cette fonction a été introduite dans Qt 6.6.

Voir également 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 l'state a été défini sur QTextToSpeech::Error. Le paramètre reason spécifie le type d'erreur, tandis que le paramètre errorString fournit une description de l'erreur lisible par l'utilisateur.

QTextToSpeech::ErrorReason n'est pas un métatype enregistré ; par conséquent, pour les connexions en file d'attente, vous devrez l'enregistrer à l'aide des fonctions Q_DECLARE_METATYPE() et qRegisterMetaType().

Voir également errorReason(), errorString() et Création de types Qt personnalisés.

[invokable] QTextToSpeech::ErrorReason QTextToSpeech::errorReason() const

Renvoie la raison pour laquelle le moteur a signalé une erreur.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

Voir également state et errorOccurred().

[invokable] QString QTextToSpeech::errorString() const

Renvoie le message d'erreur actuel du moteur.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis 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 correspondant aux critères définis dans args.

Les arguments de args sont traités afin de constituer la liste des voix qui répondent à l’ensemble de ces critères. Un argument de type QString est comparé au paramètre name de la voix, un argument de type QLocale est comparé au paramètre locale de la voix, etc. Il est possible de ne spécifier que les paramètres Language ou Territory des voix souhaitées, et le nom peut être comparé au paramètre regular expression.

Cette fonction renvoie toutes les voix si la liste des critères est vide. Il n’est pas possible de spécifier plusieurs critères du même type ; cela entraînerait une erreur de compilation.

Remarque : à moins que ` args `ne contienne la chaîne actuelle ` locale`, cette fonction peut être amenée à modifier les paramètres régionaux du moteur pour obtenir la liste de toutes les voix. Cela dépend du 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 également availableVoices().

[slot] void QTextToSpeech::pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default)

Met en pause le discours en cours à l'adresse boundaryHint.

Le respect de l'boundaryHint dépend de l'engine.

Voir également resume() et PauseResume.

[slot] void QTextToSpeech::resume()

Reprendre la lecture après l'appel de la fonction ` pause()`.

Remarque : sous Android, la reprise d'une lecture en pause 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 à lire le texte text.

Cette fonction lance la synthèse vocale 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 accessible via la propriété ` state ` et prend la valeur ` Speaking ` dès que la lecture commence. Une fois la lecture terminée, ` state ` prendra la valeur ` Ready`.

Voir également 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 l’ word, qui correspond à l’extrait de texte indiqué par start et length dans l’énoncé id, est lu sur le périphérique audio.

Remarque : ce signal nécessite que le moteur dispose de la fonctionnalité « WordByWordProgress ».

Cette fonction a été introduite dans Qt 6.6.

Voir également 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 ` sur ` engine`, en transmettant ` params ` au constructeur du moteur.

Renvoie si l'engine a pu être défini correctement.

Les paires clé/valeur prises en charge dans ` params ` dépendent du moteur. Consultez la documentation du moteur pour plus de détails. Les entrées non prises en charge seront ignorées.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

Remarque : fonctionde définition pour 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)

Interrompt la lecture en cours à l'adresse boundaryHint et efface la file d'attente des textes en attente.

La lecture ne peut pas être reprise. Le respect de la valeur « boundaryHint » dépend du moteur.

Voir également 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 l'text en données audio brutes.

Cette fonction synthétise la parole de manière asynchrone en données audio brutes. Lorsque des données sont disponibles, la méthode ` functor ` est appelée sous la forme ` functor(QAudioFormat format, QByteArray bytes)`, où ` format ` décrit l’ format des données dans ` bytes` ; ou sous la forme ` functor(QAudioBuffer &buffer)`.

La propriété state est définie sur Synthesizing au début de la synthèse, puis sur Ready une fois celle-ci terminée. Pendant la synthèse, la fonction functor peut être appelée plusieurs fois, éventuellement avec des valeurs différentes pour format.

La fonction ` functor ` peut être une entité appelable, telle qu’un lambda ou une fonction libre, avec un objet ` context ` facultatif :

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 l’ context est détruit, l’ functor ne sera plus appelé.

Remarque : cette API nécessite que le moteur dispose de la fonctionnalité « Synthesize ».

Ces fonctions ont été introduites dans Qt 6.6.

Voir également 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.