En esta página

QTextToSpeech Class

La clase QTextToSpeech proporciona un cómodo acceso a los motores de texto a voz. Más...

Cabecera: #include <QTextToSpeech>
CMake: find_package(Qt6 REQUIRED COMPONENTS TextToSpeech)
target_link_libraries(mytarget PRIVATE Qt6::TextToSpeech)
qmake: QT += texttospeech
Hereda: QObject

Tipos públicos

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 }

Propiedades

Funciones públicas

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

Ranuras públicas

(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)

Señales

(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)

Miembros públicos estáticos

QStringList availableEngines()

Descripción Detallada

Utilice say() para iniciar la lectura de texto en el dispositivo de audio predeterminado, y stop(), pause() y resume() para controlar la lectura del texto.

    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);

Para sintetizar el texto en datos PCM para su posterior procesamiento, utilice synthesize().

Utilice findVoices() para obtener una lista de voces coincidentes, o utilice availableVoices() para obtener la lista de voces compatibles con la configuración regional actual. Cambie la propiedad locale, utilizando uno de los availableLocales() que sea una buena coincidencia para el idioma en el que está el texto de entrada, y para el acento de la salida de voz deseada. Esto cambiará la lista de voces disponibles en la mayoría de las plataformas. A continuación, utilice una de las voces disponibles en una llamada a setVoice().

No todos los motores admiten todas las funciones. Utiliza la función engineCapabilities() para comprobar qué funciones están disponibles y ajusta el uso de la clase en consecuencia.

Nota: Las configuraciones regionales y las voces que admite el motor suelen depender de la configuración del sistema operativo. Por ejemplo, en macOS, los usuarios finales pueden instalar voces a través del panel Accesibilidad en Preferencias del Sistema.

Documentación del tipo de miembro

enum class QTextToSpeech::BoundaryHint

describe cuándo debe detenerse y pausarse el habla.

ConstanteValorDescripción
QTextToSpeech::BoundaryHint::Default0Utiliza el comportamiento por defecto específico del motor.
QTextToSpeech::BoundaryHint::Immediate1El motor debe detener la reproducción inmediatamente.
QTextToSpeech::BoundaryHint::Word2Detener el habla cuando termine la palabra actual.
QTextToSpeech::BoundaryHint::Sentence3Detener el habla cuando termine la frase actual.
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6)4Detener el habla cuando finalice el enunciado actual. Un enunciado es el bloque de texto utilizado en una llamada a say() o enqueue().

Nota: Se trata de sugerencias para el motor. Es posible que el motor actual no admita todas las opciones.

[since 6.6] enum class QTextToSpeech::Capacidad
flags QTextToSpeech::Capacidades

Esta enum describe las capacidades de un motor de conversión de texto a voz.

ConstanteValorDescripción
QTextToSpeech::Capability::None0El motor no implementa ninguna de las capacidades.
QTextToSpeech::Capability::Speak1 << 0El motor puede reproducir audio a partir de texto.
QTextToSpeech::Capability::PauseResume1 << 1El motor puede pausar y reanudar la salida de audio.
QTextToSpeech::Capability::WordByWordProgress1 << 2El motor emite la señal sayingWord() por cada palabra pronunciada.
QTextToSpeech::Capability::Synthesize1 << 3El motor puede synthesize PCM datos de audio de texto.

Este enum fue introducido en Qt 6.6.

El tipo Capabilities es un typedef para QFlags<Capability>. Almacena una combinación OR de valores Capability.

Véase también engineCapabilities().

enum class QTextToSpeech::ErrorReason

Este enum describe el error actual, si lo hay, del motor QTextToSpeech.

ConstanteValorDescripción
QTextToSpeech::ErrorReason::NoError0No se ha producido ningún error.
QTextToSpeech::ErrorReason::Initialization1No se ha podido inicializar el backend, por ejemplo, porque falta un controlador o un requisito del sistema operativo.
QTextToSpeech::ErrorReason::Configuration2La configuración del backend es inconsistente, por ejemplo, debido a un nombre de voz o parámetros erróneos.
QTextToSpeech::ErrorReason::Input3No se ha podido sintetizar el texto dado, por ejemplo, debido a un tamaño o caracteres no válidos.
QTextToSpeech::ErrorReason::Playback4La reproducción de audio ha fallado debido, por ejemplo, a la falta de un dispositivo de audio, a un formato incorrecto o a una interrupción de la transmisión de audio.

Utilice errorReason() para obtener el error actual y errorString() para obtener el mensaje de error relacionado.

Véase también errorOccurred().

enum QTextToSpeech::State

Este enum describe el estado actual del motor de texto a voz.

ConstanteValorDescripción
QTextToSpeech::Ready0El sintetizador está listo para iniciar un nuevo texto. Este es también el estado después de terminar un texto.
QTextToSpeech::Speaking1El texto está siendo hablado.
QTextToSpeech::Synthesizing4El texto está siendo sintetizado en datos PCM. La señal synthesized() será emitida con trozos de datos.
QTextToSpeech::Paused2La síntesis se ha pausado y puede reanudarse con resume().
QTextToSpeech::Error3Se ha producido un error. Los detalles se dan en errorReason().

Véase también QTextToSpeech::ErrorReason, errorReason(), y errorString().

Documentación de propiedades

[since 6.4] engine : QString

Esta propiedad contiene el motor utilizado para sintetizar texto a voz.

Al cambiar el motor, se detiene el habla en curso.

En la mayoría de las plataformas, el cambio de motor actualizará la lista de available locales y available voices.

Esta propiedad se introdujo en Qt 6.4.

Funciones de acceso:

QString engine() const
bool setEngine(const QString &engine, const QVariantMap &params = QVariantMap())[see note below]

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Señal de notificador:

void engineChanged(const QString &engine)

[read-only, since 6.6] engineCapabilities : Capabilities

Esta propiedad contiene las capacidades implementadas por el motor actual

Esta propiedad se introdujo en Qt 6.6.

Funciones de acceso:

QTextToSpeech::Capabilities engineCapabilities() const

Señal de notificador:

void engineChanged(const QString &engine)

Véase también engine.

locale : QLocale

Esta propiedad contiene la configuración regional en uso.

Por defecto, se utiliza la configuración regional del sistema.

En algunas plataformas, al cambiar la configuración regional se actualizará la lista de available voices, y si la voz actual no está disponible con la nueva configuración regional, se establecerá una nueva voz.

Funciones de acceso:

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

Señal del notificador:

void localeChanged(const QLocale &locale)

Véase también voice y findVoices().

pitch : double

Esta propiedad contiene el tono de voz, que va de -1.0 a 1.0.

El valor por defecto de 0.0 es el tono de voz normal.

Funciones de acceso:

double pitch() const
void setPitch(double pitch)

Señal del notificador:

void pitchChanged(double pitch)

rate : double

Esta propiedad contiene la velocidad de voz actual, que oscila entre -1,0 y 1,0.

El valor por defecto de 0.0 es el flujo de voz normal.

Funciones de acceso:

double rate() const
void setRate(double rate)

Señal del notificador:

void rateChanged(double rate)

[read-only] state : State

Esta propiedad contiene el estado actual del sintetizador de voz.

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);
}

Utilice say() para empezar a sintetizar texto con los valores actuales voice y locale.

Funciones de acceso:

QTextToSpeech::State state() const

Señal del notificador:

void stateChanged(QTextToSpeech::State state)

voice : QVoice

Esta propiedad contiene la voz que se utilizará para el discurso.

La voz tiene que ser una de las voices available para el motor.

En algunas plataformas, al establecer la voz se modifican otros atributos de voz como locale, pitch, etc. Estos cambios provocan la emisión de señales.

Funciones de acceso:

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

Señal notificadora:

void voiceChanged(const QVoice &voice)

Véase también findVoices().

volume : double

Esta propiedad contiene el volumen actual, que va de 0.0 a 1.0.

El valor por defecto es el volumen por defecto de la plataforma.

Funciones de acceso:

double volume() const
void setVolume(double volume)

Señal del notificador:

void volumeChanged(double volume)

Documentación de funciones miembro

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

Carga un motor de texto a voz de un complemento que utiliza el complemento de motor predeterminado y construye un objeto QTextToSpeech como hijo de parent.

El motor predeterminado es específico de la plataforma.

Si el motor se inicializa correctamente, entonces el state del motor cambiará a QTextToSpeech::Ready; tenga en cuenta que esto puede ocurrir de forma asíncrona. Si el plugin falla al cargarse, entonces state cambiará a QTextToSpeech::Error.

Véase también availableEngines().

[explicit] QTextToSpeech::QTextToSpeech(const QString &engine, QObject *parent = nullptr)

Carga un motor de texto a voz de un plug-in que coincida con el parámetro engine y construye un objeto QTextToSpeech como hijo de parent.

Si engine está vacío, se utiliza el plug-in de motor predeterminado. El motor predeterminado es específico de la plataforma.

Si el motor se inicializa correctamente, el state del motor se establecerá en QTextToSpeech::Ready. Si el complemento no se carga, o si el motor no se inicializa, el state del motor se establecerá en QTextToSpeech::Error.

Véase también availableEngines().

[explicit, since 6.4] QTextToSpeech::QTextToSpeech(const QString &engine, const QVariantMap &params, QObject *parent = nullptr)

Carga un motor de texto a voz desde un plug-in que coincida con el parámetro engine y construye un objeto QTextToSpeech como hijo de parent, pasando params al motor.

Si engine está vacío, se utiliza el plug-in de motor predeterminado. El motor predeterminado es específico de cada plataforma. Los pares clave/valor de params que se admiten dependen del motor. Consulte la documentación del motor para obtener más información. Las entradas no soportadas serán ignoradas.

Si el motor se inicializa correctamente, state del motor se establecerá en QTextToSpeech::Ready. Si el complemento no se carga, o si el motor no se inicializa, state del motor se establecerá en QTextToSpeech::Error.

Esta función se introdujo en Qt 6.4.

Véase también availableEngines().

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

Destruye este objeto QTextToSpeech, deteniendo cualquier discurso.

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

Esta señal se emite justo antes de que el motor comience a sintetizar el audio de voz para id. id es el valor devuelto por una llamada a enqueue(), Las aplicaciones pueden utilizar esta señal para realizar cambios de última hora en los atributos de voice, o para seguir el proceso del texto en cola a través de enqueue().

Esta función se introdujo en Qt 6.6.

Véase también enqueue(), synthesize(), y voice.

[static invokable] QStringList QTextToSpeech::availableEngines()

Obtiene la lista de plug-ins de motores de texto a voz soportados.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Véase también engine.

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

Devuelve la lista de configuraciones regionales compatibles con la página engine activa.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Véase también availableVoices() y findVoices().

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

Devuelve la lista de voces disponibles para la configuración regional actual locale.

Nota: Si no se ha establecido ninguna configuración regional, se utilizará la del sistema.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Véase también availableLocales() y findVoices().

[slot, since 6.6] qsizetype QTextToSpeech::enqueue(const QString &utterance)

Añade utterance a la cola de textos por pronunciar y comienza a hablar. Devuelve el índice del texto en la cola, o -1 en caso de error.

Si el motor de state es actualmente Ready, utterance se hablará inmediatamente. De lo contrario, el motor comenzará a hablar utterance una vez que haya terminado de hablar el texto actual.

Cada vez que el motor pasa a la siguiente entrada de texto de la cola, se emite la señal aboutToSynthesize(). Esto permite a las aplicaciones seguir el progreso y realizar cambios de última hora en los atributos de voz.

La llamada a stop() borra la cola. Para poner en pausa el motor al final de un texto, utilice la función Utterance boundary hint.

Esta función se introdujo en Qt 6.6.

Véase también say(), stop(), aboutToSynthesize() y synthesize().

[signal] void QTextToSpeech::errorOccurred(QTextToSpeech::ErrorReason reason, const QString &errorString)

Esta señal se emite después de que se haya producido un error y el parámetro state se haya establecido en QTextToSpeech::Error. El parámetro reason especifica el tipo de error, y errorString proporciona una descripción del error legible por humanos.

QTextToSpeech::ErrorReason no es un metatipo registrado, por lo que para conexiones en cola, tendrás que registrarlo con Q_DECLARE_METATYPE() y qRegisterMetaType().

Véase también errorReason(), errorString(), y Creación de tipos Qt personalizados.

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

Devuelve la razón por la que el motor ha informado de un error.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Véase también state y errorOccurred().

[invokable] QString QTextToSpeech::errorString() const

Devuelve el mensaje de error actual del motor.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Véase también errorOccurred().

[since 6.6] template <typename... Args> QList<QVoice> QTextToSpeech::findVoices(Args &&... args) const

Devuelve la lista de voces que coinciden con los criterios de args.

Los argumentos de args se procesan para confeccionar la lista de voces que coinciden con todos ellos. Un argumento de tipo QString se compara con el name, de la voz, un argumento de tipo QLocale se compara con el locale, de la voz, etc. Es posible especificar sólo el Language o Territory de las voces deseadas, y el nombre puede compararse con un regular expression.

Esta función devuelve todas las voces si la lista de criterios está vacía. No es posible utilizar varios criterios del mismo tipo, lo que provocará un error de compilación.

Nota: A menos que args incluya el locale actual, esta función puede necesitar cambiar la configuración regional del motor para obtener la lista de todas las voces. Esto es específico del motor, pero podría afectar a la síntesis de voz en curso. Por lo tanto, es aconsejable no llamar a esta función a menos que state sea Ready.

Esta función se introdujo en Qt 6.6.

Véase también availableVoices().

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

Pausa el discurso actual en boundaryHint.

El respeto de boundaryHint depende de engine.

Véase también resume() y PauseResume.

[slot] void QTextToSpeech::resume()

Reanudar el habla después de llamar a pause().

Nota: En Android, la reanudación del habla pausada se reiniciará desde el principio. Se trata de una limitación del motor de texto a voz subyacente.

Véase también pause().

[slot] void QTextToSpeech::say(const QString &text)

Inicia el habla en text.

Esta función comienza a sintetizar el habla de forma asíncrona y lee el texto en el dispositivo de salida de audio predeterminado.

    connect(ui.speakButton, &QPushButton::clicked, m_speech, [this]{
        m_speech->say(ui.plainTextEdit->toPlainText());
    });

Nota: Todas las lecturas en curso se detienen antes de comenzar a leer el texto recién sintetizado.

El estado actual está disponible utilizando la propiedad state, y se establece en Speaking una vez que comienza la lectura. Cuando finalice la lectura, state se establecerá en Ready.

Véase también enqueue(), stop(), pause(), resume(), y synthesize().

[signal, since 6.6] void QTextToSpeech::sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length)

Esta señal se emite cuando el word, que es el fragmento de texto indicado por start y length en el enunciado id, se reproduce en el dispositivo de audio.

Nota: Esta señal requiere que el motor tenga la capacidad WordByWordProgress.

Esta función se introdujo en Qt 6.6.

Véase también Capability y say().

[invokable, since 6.4] bool QTextToSpeech::setEngine(const QString &engine, const QVariantMap &params = QVariantMap())

Establece el motor utilizado por este objeto QTextToSpeech a engine, pasando params al constructor del motor.

Devuelve si engine pudo ser configurado con éxito.

Los pares clave/valor soportados en params dependen del motor. Consulte la documentación del motor para más detalles. Las entradas no soportadas serán ignoradas.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

Nota: Función Setter para la propiedad engine.

Esta función se introdujo en Qt 6.4.

Véase también engine().

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

Detiene la lectura en curso en boundaryHint, y borra la cola de textos pendientes.

La lectura no puede reanudarse. El respeto de boundaryHint depende del motor.

Véase también say(), enqueue() y 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)

Sintetiza la text en datos de audio sin procesar.

Esta función sintetiza el habla de forma asíncrona en datos de audio sin procesar. Cuando haya datos disponibles, se llamará a functor como functor(QAudioFormat format, QByteArray bytes), con format describiendo la format de los datos en bytes; o como functor(QAudioBuffer &buffer).

La propiedad state se establece en Synthesizing cuando comienza la síntesis, y en Ready una vez finalizada. Durante la síntesis, el functor puede ser llamado varias veces, posiblemente con valores cambiantes para format.

El functor puede ser un callable, como una función lambda o free, con un objeto context opcional:

tts.synthesize("Hello world", [](const QAudioFormat &format, const QByteArray &bytes){
    // process data according to format
});

o una función miembro del objeto 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 es destruido, entonces functor ya no será llamado.

Nota: Esta API requiere que el motor tenga la capacidad Synthesize.

Estas funciones se introdujeron en Qt 6.6.

Véase también say() y 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.