Mostrar mensagens com a etiqueta d Speech. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta d Speech. Mostrar todas as mensagens

domingo, 6 de janeiro de 2013

DSpeech, leitor de textos e gravador audio-books


Text-to-Speech Tutorial

Este tutorial cobre uma base muito texto-para-fala exemplo (TTS). O aplicativo de console é uma das mais simples manifestações de discurso. É o "Olá Mundo" equivalente para TTS. Uma amostra equivalente para uma aplicação Windows usando uma interface gráfica (e bomba de evento) está disponível em Usando eventos com TTS .
A amostra se acumula desde os mais simples (embora não funcionais) COM quadro de falar uma frase. Etapas são fornecidas para cada nova função. A amostra ainda vai um passo além de demonstrar as marcas de uso de XML para modificar discurso. A aplicação de amostra completa fica na parte inferior da página.
Passo 1: Configurando o projeto 
Passo 2: Inicializar COM 
Passo 3: Configurando Vozes 
Passo 4: Fale! 
Passo 5: Modificando Speech

Passo 1: Configurando o projeto

Embora seja possível escrever um aplicativo a partir do zero, é mais fácil partir de um projeto existente. Neste caso, utilize o assistente do Visual Studio aplicativo para criar um aplicativo de console do Win32. Escolha "Olá mundo", como a amostra quando perguntado durante o assistente de configuração. Depois de gerar isso, abra o arquivo StdAfx.h e cole o seguinte código depois de "# include", mas antes do "# endif" declaração. Isso configura o adicional dependências SAPI requer.

# Define _ATL_APARTMENT_THREADED

# Include <atlbase.h>
/ / Você pode derivar uma classe de CComModule e usá-lo se você quiser substituir alguma coisa,
/ / Mas não mudam o nome do _Module
_Module CComModule externo;
# Include <atlcom.h>
Listagem de código 1
Em seguida adicione os caminhos para arquivos SAPI.h e SAPI.lib. Os caminhos são indicados para um padrão SAPI SDK instalação. Se o compilador não consegue localizar qualquer arquivo, ou se a instalação foi realizada fora do padrão, use o novo caminho para os arquivos. Alterar as configurações do projeto para refletir os caminhos. Usando as configurações do projeto>. item de menu, defina o caminho SAPI.h. Clique na C / C + + guia e selecione Preprocessor da Categoria lista drop-down. Digite o seguinte no "adicionais incluem diretórios": C: \ Program Files \ Microsoft Speech SDK 5,3 \ Include.
Para definir o caminho SAPI.lib:
  1. Selecione a guia ligação da mesma caixa de diálogo Configurações.
  2. Escolha a categoria de entrada da lista drop-down.
  3. Adicione o seguinte caminho para o "caminho da biblioteca adicional":
    C: \ Program Files \ Microsoft Speech SDK 5,3 \ Lib \ i386.
  4. Também adicionar "sapi.lib" para o "Objeto / biblioteca módulos" linha. Certifique-se de que o nome é separado por um espaço.

Passo 2: Inicializar COM

SAPI é uma aplicação baseada em COM e COM deve ser inicializado tanto antes de usar e durante o tempo SAPI está ativo. Na maioria dos casos, isso é para a vida do aplicativo host. O código a seguir (da Lista 2) inicializa COM. Claro, o aplicativo não faz nada além de inicialização, mas garante que a COM é iniciado com êxito.

# Include <Stdafx.h>
# Include <sapi.h>

int main (int argc, char * argv [])
{
    if (FAILED (:: CoInitialize (NULL)))
        retornar FALSE;

    :: CoUninitialize ();
    return TRUE;
}
Listagem de código 2

Passo 3: Configurando vozes

Uma vez COM está sendo executado, o próximo passo é criar a voz. A voz é simplesmente um objeto COM. Além disso, SAPI usa padrões inteligentes. Durante a inicialização do objeto, SAPI atribui a maioria dos valores automaticamente de modo que o objeto pode ser usado imediatamente depois. Isto representa uma melhoria importante das versões anteriores. Os padrões são recuperados a partir de propriedades de fala no Painel de Controle e incluir informações como a voz (se mais de uma está disponível em seu sistema), eo idioma (Inglês, Japonês, etc.) Enquanto alguns padrões são óbvios, outros não são (velocidade da fala, pitch, etc.) No entanto, todos os padrões podem ser modificados de programação ou em propriedades de fala no Painel de Controle.
Definir o pVoice ponteiro para NULL não é necessário, mas é útil para verificar erros, o que garante um ponteiro inválido não é reutilizado, ou como um lembrete de que o ponteiro já foi alocado ou desalocado

# Include <Stdafx.h>
# Include <sapi.h>

int main (int argc, char * argv [])
{
    ISpVoice * pVoice = NULL;

    if (FAILED (:: CoInitialize (NULL)))
        retornar FALSE;

    HRESULT hr = CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) &pVoice;);
    if (SUCCEEDED (h))
    {
        pVoice-> Release ();
        pVoice = NULL;
    }

    :: CoUninitialize ();
    return TRUE;
}
Listagem de código 3. O texto em negrito representa novo código para este exemplo.

Passo 4: Fale!

O discurso real da frase é uma tarefa igualmente simples: uma linha chamando a função de fala. Quando a instância da voz não é mais necessário, você pode soltar o objeto.

# Include <Stdafx.h>
# Include <sapi.h>

int main (int argc, char * argv [])
{
    ISpVoice * pVoice = NULL;

    if (FAILED (:: CoInitialize (NULL)))
        retornar FALSE;

    HRESULT hr = CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) &pVoice;);
    if (SUCCEEDED (h))
    {
        hr = pVoice-> Speak (L "Olá, mundo", 0, NULL);
        pVoice-> Release ();
        pVoice = NULL;
    }

    :: CoUninitialize ();
    return TRUE;
}
4 listagem de código. O texto em negrito representa novo código para este exemplo.

Passo 5: Modificando Speech

Vozes podem ser modificadas utilizando uma variedade de métodos. A maneira mais direta é a aplicação de comandos XML diretamente para o fluxo. Veja o XML Tutorial TTSpara mais detalhes. Neste caso, uma classificação relativa de 10 irá reduzir o tom da voz.

# Include <Stdafx.h>
# Include <sapi.h>

int main (int argc, char * argv [])
{
    ISpVoice * pVoice = NULL;

    if (FAILED (:: CoInitialize (NULL)))
        retornar FALSE;

    HRESULT hr = CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) &pVoice;);
    if (SUCCEEDED (h))
    {
        hr = pVoice-> Speak (L "Olá, mundo", 0, NULL);

        / Mudança / pitch
        hr = pVoice-> Speak (L "Isso parece normal, <pitch meio ='-10'/> mas o tom cai no meio do caminho", SPF_IS_XML, NULL);
        pVoice-> Release ();
        pVoice = NULL;
    }
    :: CoUninitialize ();
    return TRUE;
}

Listagem de código 5. O texto em negrito representa novo código para este exemplo. Este é o exemplo de código completo.

Número total de visualizações de página