Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 14-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
yo creo que el tema de texto a voz es mucho jaleo para lo que quieres hacer

pero algo asi es:

Código:
#include <sapi.h>
Código:
void SpeakText(const String& text) {
    // Inicializar COM
    CoInitialize(NULL);

    // Crear el objeto de voz
    ISpVoice *pVoice = NULL;
    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

    if (SUCCEEDED(hr)) {
        // Pronunciar el texto
        pVoice->Speak(text.w_str(), 0, NULL);
        pVoice->Release(); // Liberar el objeto
    }

    // Finalizar COM
    CoUninitialize();
}

Enumerar las voces disponibles:

Código:
#include <sapi.h>
#include <sphelper.h>
#include <iostream>
#include <vector>
#pragma hdrstop

void ListVoices() {
    // Inicializar COM
    CoInitialize(NULL);

    // Crear el objeto de voz
    ISpVoice *pVoice = NULL;
    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    
    if (SUCCEEDED(hr)) {
        ISpObjectTokenEnumerator *pEnum = NULL;
        hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pEnum);

        if (SUCCEEDED(hr)) {
            ISpObjectToken *pToken = NULL;
            while (pEnum->Next(1, &pToken, NULL) == S_OK) {
                LPWSTR pwszId;
                pToken->GetId(&pwszId);
                // Obtener el nombre de la voz
                LPWSTR pwszVoiceName;
                pToken->GetStringValue(L"Name", &pwszVoiceName);
                std::wcout << L"Voice ID: " << pwszId << L", Voice Name: " << pwszVoiceName << std::endl;
                CoTaskMemFree(pwszVoiceName);
                CoTaskMemFree(pwszId);
                pToken->Release();
            }
            pEnum->Release();
        }
        pVoice->Release(); // Liberar el objeto de voz
    }

    // Finalizar COM
    CoUninitialize();
}

Cambiar la Voz:

Código:
void SpeakText(const String& text, const String& voiceId) {
    // Inicializar COM
    CoInitialize(NULL);

    // Crear el objeto de voz
    ISpVoice *pVoice = NULL;
    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    
    if (SUCCEEDED(hr)) {
        // Seleccionar la voz por ID
        ISpObjectToken *pToken = NULL;
        hr = SpGetTokenFromId(voiceId.w_str(), &pToken);
        if (SUCCEEDED(hr)) {
            pVoice->SetVoice(pToken);
            pToken->Release(); // Liberar el objeto token
        }

        // Pronunciar el texto
        pVoice->Speak(text.w_str(), 0, NULL);
        pVoice->Release(); // Liberar el objeto de voz
    }

    // Finalizar COM
    CoUninitialize();
}

Última edición por navbuoy fecha: 15-10-2024 a las 00:06:01.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delay en liveBindings look FireMonkey 0 01-04-2022 20:57:00
Ayuda con funcion Delay Novatin C++ Builder 2 25-06-2013 04:48:50
delay con WinSock chelox Internet 0 24-07-2010 06:46:36
Sleep/delay? nena_yei OOP 6 22-07-2010 16:41:47
Delay de Pascal Esau OOP 4 28-08-2003 21:32:11


La franja horaria es GMT +2. Ahora son las 17:41:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi