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 ¶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 |
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.
| Constante | Valor | Descripción |
|---|---|---|
QTextToSpeech::BoundaryHint::Default | 0 | Utiliza el comportamiento por defecto específico del motor. |
QTextToSpeech::BoundaryHint::Immediate | 1 | El motor debe detener la reproducción inmediatamente. |
QTextToSpeech::BoundaryHint::Word | 2 | Detener el habla cuando termine la palabra actual. |
QTextToSpeech::BoundaryHint::Sentence | 3 | Detener el habla cuando termine la frase actual. |
QTextToSpeech::BoundaryHint::Utterance (since Qt 6.6) | 4 | Detener 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.
| Constante | Valor | Descripción |
|---|---|---|
QTextToSpeech::Capability::None | 0 | El motor no implementa ninguna de las capacidades. |
QTextToSpeech::Capability::Speak | 1 << 0 | El motor puede reproducir audio a partir de texto. |
QTextToSpeech::Capability::PauseResume | 1 << 1 | El motor puede pausar y reanudar la salida de audio. |
QTextToSpeech::Capability::WordByWordProgress | 1 << 2 | El motor emite la señal sayingWord() por cada palabra pronunciada. |
QTextToSpeech::Capability::Synthesize | 1 << 3 | El 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.
| Constante | Valor | Descripción |
|---|---|---|
QTextToSpeech::ErrorReason::NoError | 0 | No se ha producido ningún error. |
QTextToSpeech::ErrorReason::Initialization | 1 | No se ha podido inicializar el backend, por ejemplo, porque falta un controlador o un requisito del sistema operativo. |
QTextToSpeech::ErrorReason::Configuration | 2 | La configuración del backend es inconsistente, por ejemplo, debido a un nombre de voz o parámetros erróneos. |
QTextToSpeech::ErrorReason::Input | 3 | No se ha podido sintetizar el texto dado, por ejemplo, debido a un tamaño o caracteres no válidos. |
QTextToSpeech::ErrorReason::Playback | 4 | La 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.
| Constante | Valor | Descripción |
|---|---|---|
QTextToSpeech::Ready | 0 | El sintetizador está listo para iniciar un nuevo texto. Este es también el estado después de terminar un texto. |
QTextToSpeech::Speaking | 1 | El texto está siendo hablado. |
QTextToSpeech::Synthesizing | 4 | El texto está siendo sintetizado en datos PCM. La señal synthesized() será emitida con trozos de datos. |
QTextToSpeech::Paused | 2 | La síntesis se ha pausado y puede reanudarse con resume(). |
QTextToSpeech::Error | 3 | Se 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 ¶ms = 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 ¶ms, 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 ¶ms = 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.
© 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.