Vozes digitais

4 jul

 

A Interface de Programação de Aplicativos do discurso ou SAPI é uma API desenvolvida pela Microsoft para permitir o uso de reconhecimento de fala e síntese de fala dentro do Windows aplicações. Até à data, uma série de versões da API foram lançados, que foram vendidas como parte de um discurso SDK , ou como parte de Windows OSem si. As aplicações que utilizam SAPI incluem Microsoft Office , Microsoft Agent e Microsoft Speech Server .

Em geral todas as versões da API foram projetados de tal forma que um desenvolvedor de software pode escrever um aplicativo para executar reconhecimento de fala e síntese usando um conjunto padrão de interfaces, acessível a partir de uma variedade de linguagens de programação. Além disso, é possível para uma empresa terceira-parte para produzir seu próprio Reconhecimento de Voz e Text-To-Speech motores ou adaptar motores existentes para trabalhar com SAPI. Em princípio, o tempo que estes motores em conformidade com as interfaces definidas que possam ser utilizados em vez dos motores fornecidos pela Microsoft.

Em geral, a API Speech é um componente de livre distribuição, que pode ser enviado com qualquer aplicativo do Windows que deseja utilizar tecnologia de fala. Muitas versões (embora não todos) dos mecanismos de reconhecimento e síntese de fala também possam ser redistribuídos livremente.

Houve dois principais “famílias” do Microsoft Speech API. SAPI versões de 1 a 4 são todos semelhantes uns aos outros, com as características extras em cada versão. SAPI 5, porém, foi uma interface completamente nova, lançado em 2000. Desde então, vários sub-versões deste API foram liberados.

Arquitetura básica 

A API Speech pode ser visto como uma interface ou um pedaço de middleware, que fica entre as aplicações e mecanismos de fala (reconhecimento e síntese). Em versões SAPI 1 a 4, os pedidos podem comunicar-se diretamente com os motores. A API incluída uma definição de interface abstrata que aplicações e motores conformados com.Aplicações também pode usar simplificado objetos de nível superior, em vez de chamar diretamente métodos sobre os motores.

Em SAPI 5 no entanto, as aplicações e os motores não se comunicam diretamente uns com os outros. Em vez disso, cada um fala com um tempo de execução componente(sapi.dll). Existe uma API implementado por este componente que utilizam, e um outro conjunto de interfaces para os motores.

Tipicamente, em SAPI 5 questão aplicações chamadas através da API (por exemplo, para carregar uma gramática reconhecimento; iniciar o reconhecimento, ou fornecer texto a ser sintetizada). O componente de tempo de execução sapi.dll interpreta os comandos e os processa, onde necessário de chamada no motor através das interfaces do motor (por exemplo, o carregamento de uma gramática de um arquivo é feita em tempo de execução, mas em seguida, a gramática dados é transmitido para o mecanismo de reconhecimento de realmente usar em reconhecimento). Os motores de reconhecimento e síntese também gerar eventos durante o processamento (por exemplo, para indicar um enunciado tem sido reconhecida ou para indicar limites de palavra no discurso sintetizado). Estes passam no sentido inverso, dos motores, através da dll runtime, e para umcoletor de eventos no aplicativo.

Além da definição API e tempo de execução dll real, outros componentes são fornecidos com todas as versões do SAPI para fazer um discurso completo Kit de Desenvolvimento de Software . Os seguintes componentes estão entre os incluídos na maioria das versões do SDK de voz:

  • Arquivos de definição de API – em MIDL e como arquivos de cabeçalho C ou C ++.
  • Componentes de tempo de execução – por exemplo sapi.dll.
  • Painel de Controle do applet – para selecionar e configurar reconhecedor de voz padrão e sintetizador.
  • Motores de texto-para-voz em vários idiomas.
  • Motores de reconhecimento de fala em vários idiomas.
  • Componentes redistribuíveis para permitir aos desenvolvedores empacotar os motores e tempo de execução com o código do aplicativo para produzir uma única aplicação instalável.
  • Código de aplicação da amostra.
  • Motores de exemplo – as implementações das interfaces do motor necessária mas sem processamento da fala verdade que poderia ser usado como uma amostra para aqueles portar um motor para SAPI.
  • Documentação.

Versões 

Xuedong Huang foi uma pessoa chave que liderou os esforços SAPI início da Microsoft.

API família SAPI 1-4

SAPI 1 

A primeira versão do SAPI foi lançado em 1995, e foi suportado em Windows 95 e Windows NT 3.51 . Esta versão incluiu Reconhecimento de baixo nível direto fala e de texto direto para APIs de fala quais aplicativos podem usar para controlar diretamente motores, bem como simplificado “maior nível” comando de voz e de voz APIs Talk.

SAPI 3 

SAPI 3.0 foi lançado em 1997. Ele adicionou suporte limitado para o reconhecimento de voz ditado (discurso discreto, não contínua), e aplicativos de amostra adicionais e fontes de áudio.

SAPI 4 

SAPI 4.0 foi lançado em 1998. Esta versão do SAPI incluídos tanto o núcleo COM API; juntamente com C ++ classes de mensagens publicitárias para fazer a programação de C ++ mais fácil; e ActiveX controla para permitir arrastar-e-soltar Visual Basic desenvolvimento. Este foi enviado como parte de um SDK, que incluiu os motores de reconhecimento e síntese. Ele também enviados (com apenas motores de síntese) em Windows 2000 .

Os principais componentes do SAPI 4 API (que foram todos disponíveis em C ++, COM e sabores ActiveX) foram:

  • Comando de voz – de alto nível objetos para reconhecimento de voz de comando e controle
  • Voz ditado – objetos de alto nível para o reconhecimento de voz ditado contínua
  • Voz Talk – objetos de alto nível para a síntese de voz
  • Telefonia vocal – objetos para aplicações de voz escrito telefónicas
  • Reconhecimento de fala direta – objetos para controle direto do mecanismo de reconhecimento
  • Texto direto para Speech – objetos para controle direto do motor de síntese
  • Objetos de áudio – para leitura de e para um dispositivo de áudio ou arquivo

SAPI 5 API família

O Speech SDK versão 5.0, incorporando o tempo de execução SAPI 5.0 foi lançado em 2000. Este foi um redesenho completo de versões anteriores e nem motores nem aplicações que usaram versões mais antigas do SAPI poderia usar a nova versão sem modificação considerável.

O design da nova API incluído o conceito de separar estritamente a aplicação e motor para todas as chamadas foram encaminhadas através do sapi.dll tempo de execução.Esta mudança foi destinado a fazer a API mais “independente motor ‘, evitando aplicações inadvertidamente dependendo dos recursos de um motor específico. Além disso, esta alteração visava tornando muito mais fácil de incorporar a tecnologia de voz em um aplicativo, movendo alguns códigos gestão e de inicialização no tempo de execução.

A nova API foi inicialmente uma COM API puro e pode ser facilmente utilizado apenas a partir de C / C ++. Suporte para linguagens VB e scripts foram adicionados mais tarde.Sistemas operativos de Windows 98 e NT 4.0 foram apoiados para cima.

As características principais da API incluem:

  • Reconhecimento de Shared. Para aplicações de reconhecimento de voz desktop, um objeto reconhecedor pode ser usado que é executado em um processo separado(Sapisvr.exe). Todas as aplicações que utilizam o reconhecedor compartilhado comunicar com a única instância. Isso permite o compartilhamento de recursos, remove disputa pelo microfone e permite uma interface global para o controle de todas as aplicações de voz.
  • In-proc reconhecedor. Para aplicações que requerem controle explícito do processo de reconhecimento do objeto reconhecedor in-proc pode ser usado em vez de um compartilhada.
  • Objetos gramática. gramáticas de fala são usadas para especificar as palavras que o reconhecedor está escutando. SAPI 5 define um XML marcação para especificar uma gramática, bem como mecanismos para criá-los dinamicamente no código. Métodos também existem para instruir o reconhecedor para carregar um modelo de linguagem ditado embutido.
  • Objeto de voz. Isso realiza a síntese de voz, produzindo um fluxo de áudio a partir do texto. Uma linguagem de marcação (XML semelhante a, mas não estritamente XML) pode ser usada para controlar o processo de síntese.
  • Interfaces de áudio. O tempo de execução inclui objetos para a realização de entrada de voz do microfone ou da fala de saída para alto-falantes (ou qualquer dispositivo de som); , bem como para e a partir de ficheiros de onda. Também é possível escrever um objeto de áudio personalizado para transmitir áudio ou a partir de um local não-padrão.
  • Objeto léxico usuário. Isso permite que palavras personalizadas e pronúncias de ser adicionado por um usuário ou aplicativo. Estes são adicionados dicionários internos do motor de reconhecimento ou síntese.
  • Amostras de objetos. Este é um conceito que permite mecanismos de reconhecimento e TTS, objetos de áudio, léxicos e outras categorias de objeto a ser registrados, enumerados e instanciado de uma forma comum.

SAPI 5.0

Esta versão enviado no final de 2000, como parte do Speech SDK versão 5.0, em conjunto com a versão 5.0 reconhecimento e motores de síntese. Os motores de reconhecimento suportado ditado contínuo e de comando e controle e foram liberados em US Inglês, japonês e chinês simplificado versões. No sistema americano Inglês, modelos acústicos especiais estavam disponíveis para a fala das crianças e fala de telefonia. O motor de síntese estava disponível em Inglês e Chinês. Esta versão dos motores de API e reconhecimento também enviados no Microsoft Office XP, em 2001.

SAPI 5.1

Esta versão enviado no final de 2001, como parte do Speech SDK versão 5.1. Interfaces de automação compatível foram adicionados à API para permitir o uso do Visual Basic, linguagens de script como JScript e código gerenciado . Esta versão dos motores de API e TTS foi enviado em Windows XP . Windows XP Tablet PC Edition eo Office 2003 também incluem esta versão, mas com um mecanismo de reconhecimento de versão 6 substancialmente melhorada e chinês tradicional .

SAPI 5.2 

Esta foi uma versão especial do API para uso apenas no Speech Server Microsoft que acompanha em 2004. Ele adicionou suporte para SRGS e SSML linguagens de marcação, bem como recursos de servidor adicionais e melhorias de desempenho. O Speech Server também fornecido com o mecanismo de reconhecimento de área de trabalho versão 6 e o motor de reconhecimento servidor da versão 7.

SAPI 5.3

Esta é a versão da API que os navios no Windows Vista juntamente com novos mecanismos de reconhecimento e síntese. Como reconhecimento de voz do Windows agora está integrado ao sistema operacional, o SDK e APIs de fala são uma parte do Windows SDK . SAPI 5.3 inclui as seguintes novas funcionalidades:

  • Suporte para o discurso XML W3C gramáticas de reconhecimento e síntese. O Speech Synthesis Markup Language (SSML) versão 1.0 fornece a capacidade de marcar as características de voz, velocidade, volume, densidade, a ênfase, e pronúncia.
  • O Speech Recognition Grammar Specification (SRGS) apoia a definição de gramáticas livres de contexto, com duas limitações:
    • Ele não suporta o uso de SRGS para especificar de frequência modulada (touch-tone) gramáticas dual-tom.
    • Ele não suporta Augmented Backus-Naur (ABNF).
  • Suporte para script de interpretação semântica dentro de gramáticas. SAPI 5.3 permite uma gramática SRGS a ser anotado com JavaScript para interpretação semântica para complementar o texto reconhecido.
  • atalhos especificado pelo usuário em léxicos, que é a capacidade de adicionar uma string ao léxico e associá-lo com uma palavra de atalho. Ao ditar, o usuário pode dizer a palavra atalho e o reconhecedor será a string expandida.
  • A funcionalidade adicional e facilidade de programação fornecido por novos tipos.
  • melhorias de desempenho, maior confiabilidade e segurança.
  • Versão 8 do mecanismo de reconhecimento de fala ( “Speech reconhecedor Microsoft”)

SAPI 5.4 

Esta é uma versão atualizada do API que os navios no Windows 7 .

SAPI 5 Vozes

Ver artigo principal: vozes da Microsoft text-to-speech

Microsoft Sam (Speech Articulação Module) é um comumente enviado SAPI 5 voz. Além disso, o Microsoft Office XP e Office 2003 instalado L & H vozes Michael e Michelle. O SAPI 5.1 SDK instala mais 2 vozes, Mike e Maria. Windows Vista inclui Microsoft Anna que substitui o Microsoft Sam e soa mais natural e inteligível. Ele também é instalado no Windows XP pela Microsoft Streets & Trips 2006 e versões posteriores. A versão chinesa do Vista e versões de cliente depois do Windows também incluem uma voz feminina chamado Microsoft Lili .

Managed Speech código API 

Um código gerenciado navios API como parte do .NET Framework 3.0 . Ele tem uma funcionalidade semelhante para SAPI 5, mas é mais adequado para ser usado por aplicativos de código gerenciado. A nova API está disponível no Windows XP , Windows Server 2003 , Windows Vista e Windows Server 2008 .

O existente SAPI 5 API também pode ser usado a partir de código gerenciado de forma limitada através da criação de código de interoperabilidade (código auxiliar projetado para auxiliar no acesso a interfaces COM e classes). Isso funciona bem em alguns cenários no entanto, a nova API deve fornecer uma experiência mais uniforme equivalente a usar qualquer outra biblioteca de código gerenciado.

No entanto, grande obstáculo em direção a transição do COM Interop é o fato de que a implementação gerenciado tem sutis vazamentos de memória que levam à fragmentação de memória e excluir o uso da biblioteca em todas as aplicações não-triviais. Como solução, a Microsoft sugeriu o uso de uma API diferente, que tem menos vozes. 

Funcionalidade de voz no Windows Vista 

Windows Vista inclui uma série de novos recursos relacionados à fala, incluindo:

  • Controle discurso do cheia de Windows GUI e aplicações
  • Novo tutorial, assistente microfone e interface do usuário para controlar o reconhecimento de voz
  • Nova versão do tempo de execução API Speech: SAPI 5.3
  • Built-in motor de Reconhecimento de Voz atualizado (versão 8)
  • Motor Speech Synthesis nova e voz SAPI Microsoft Anna
  • O código gerenciado API fala (SpeechFX codinome)
  • suporte de reconhecimento de voz para 8 idiomas em tempo de liberação: US Inglês, Reino Unido Inglês, chinês tradicional, chinês simplificado, japonês, espanhol, francês e alemão, com uma linguagem mais para ser liberado mais tarde.

Microsoft Agent mais notavelmente, e todas as outras aplicações de voz da Microsoft utilizam SAPI 5.

Compatibilidade 

A API de voz é compatível com os seguintes sistemas operacionais: 

SAPI 5

SAPI 4 

As principais aplicações usando SAPI 

Veja também 

Ligações externas 

Baixe o SAPI 5 no link abaixo:

https://www.microsoft.com/en-us/download/details.aspx?id=10121

 

É possível comprar vozes digitais nestes sites:

 

fontes:

https://en.wikipedia.org/wiki/Microsoft_Speech_API

Anúncios

Matemática de Computador

28 jun

Arredontamentos matemáticos no computador – metrologia digital

A diferença entre:

  • Math.ceil
  • Math.round e
  • Math.floor

 

Gustavo, tem um artigo errado no Mozila Network Developer ou é impressão minha?
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
Math.floor()
A função Math.floor(x) retorna o maior número inteiro dentre o número “x”.
developer.mozilla.org
Gustavo
dentre o numero ta certo..

Luis
maior valor?
floor não retorna o MENOR valor?
Gustavo
ex: 12.34534 = 12
Veja esse site q eu to vendo:https://fbstart.com/
FbStart
FbStart provides startups with an exclusive community, worldwide events, mentorship from Facebook, and up to $80,000 in free tools and services.
fbstart.com

Luis
Math.floor não retorna o menor valor
?
Gustavo
eh o antes da virgula

Luis
?
não entendi
Gustavo
definição floor eh a numero que aparece antes da virgula

Luis
sim
mas o retorno de Math.floor para 1.4 por exemplo é 2
Gustavo
isse eh o round

Luis
não… round devolveria 1
aliás
Gustavo
nao eh floor, floor eh piso em ingles

Luis
Math.floor(1.4) = 1
esse é o correto
e no site tá ao contrároi
Gustavo
telhado é o ceil
para numeros negaivos muda o floor pega o maior
vc devia ser apresentador cara.

Luis
ó
no site
o texto
está assim:

A função Math.floor(x) retorna o maior número inteiro dentre o número “x”.
o correto não seria: “A função Math.floor retorna o MENOR número inteiro…”?
Gustavo
o ceil acrescenta 1 neh..
“dentre” que aparece ele pega o numero inteiro que aparece
se fosse o menor seria 1

Luis
não entendi
Gustavo
eh maneira de falar
o que a gente fala nao se escreve o que a gente escreve nao se fala

Luis
entendi mais nada
Gustavo
MENOR NUMERO INTEIRO ninguem escreve isso, não pode haver duplo sentido, é o maior inteiro DENTRE o numero float (antes da virgula)

Luis
ah
acho q entendi agora
caraio mano
como sou burro
hauahuahuahua
Gustavo
tem q abri um pouco mais a mente senao fica bitolado no q o profesor fala

Luis
o que é fbstart?
vc chegou a ver detalhes?
Gustavo
to vendo agora..
vc viu o curso de javascript?
https://www.schoolofnet.com/courses/javascript-basico

Javascript Básico – Curso Online | School of Net
Entre de vez no mundo do Javascript e aprenda a trabalhar com essa linguagem que é conhecida mundialmente. O Javascript roda nos principais navegadores web, é utilizado para desenvolvimentos de aplicativos mobile e ainda, utilizado em sistemas back end, enfim, fundamental para um bom desenvolvedor w…
schoolofnet.com

 

to ligado de JS… o problema ali era interpretação de texto
Gustavo
bem isso

Como fazer um raio-X do Death Vader em flash

9 jan

 

Veja o resultado…: Raio-X do Death Vader

Textos Gradientes com CSS

28 dez

Vamos criar um

Hello World

Usando textos degrades com CSS

coloque o atributo data-text para funcionar por exemplo:

<h1 data-text=”texto”>Texto </h1>


FINAL CSS

/* Select only h1s that contain a 'data-text' attribute */
h1[data-text] {
	position: relative;
        color: red;
}

h1[data-text]::after {
/*esta linha pega o content data-text da TAG*/
	content: attr(data-text);
	z-index: 2;
	color: green;
	position: absolute;
	left: 0;
	-webkit-mask-image: -webkit-gradient(
		linear,
		left top, left bottom,
		from(rgba(0,0,0,1)),
		color-stop(50%, rgba(0,0,0,1)),
                to(rgba(0,0,0,0))
	);
}
/*50% é para o degrade mudar no meio do texto*/

hello

Como salvar uma imagem dinamica

27 dez

Essa dica é muito interessante e pratica.

Muitas vezes precisamos copiar uma parte da tela, algo que seria semelhante ao botão printscreen do teclado, que pode ser utilizado com alt+shift para pegar apenas a janela atual.

Eu criei uma função no delphi que captura imagens de um GIF Animado e salva em arquivos bitmaps.

Os arquivos bitmaps são melhores para se colocar como papel de parede por exemplo pois op processador não precisa processar a imagem que fica na memoria por inteiro.

Ele salva um canvas para um arquivo bitmap.

Essa função também pode ser utilizada para capturar um screen (imagem) de um video em AVI por exemplo é só utilizar a criatividade!

 

Estou utilizando a linguagem pascal do Delphi que imprime as imagens (paint) em um objeto chamado Canvas que existe em todas as imagens que trabalham com pixel. Eu utilizei uma TImage e um TpaintBox com um TGIFImage mas voce pode utilizar outro componente que mostre um GIFAnimado como o da biblioteca RX ou do JEDI, que tem componentes prontos para imagens e vídeos no Delphi.

A Função BItBlt copia o canvas para a imagem depois é só salvar a image.

uses Graphics

 

no clicar do botão coloque o código…

begin

If img1.Picture.bitmap.Width <> PaintBoxPalette.Width then img1.Picture.bitmap.Width := PaintBoxPalette.Width;
If img1.Picture.bitmap.Height <> PaintBoxPalette.Height then img1.Picture.bitmap.Height := PaintBoxPalette.Height;
img1.Picture.bitmap.Canvas.Rectangle(0,0,PaintBoxPalette.Width,PaintBoxPalette.Height);
PaintBoxPalette.Canvas.Draw(0,0,img1.Picture.bitmap);

BitBlt(img1.Picture.bitmap.Canvas.Handle,0,0,img1.Picture.bitmap.Width,img1.Picture.bitmap.Height,PaintBoxPalette.Canvas.Handle,0,0,SRCCOPY);
img1.Picture.bitmap.savetofile( edt1.EditText+’\bitm’+inttostr(i)+’.bmp’);
inc(i);
beep();

 

end;

 

Eu me baseei nessa função:

Nota: declare “jpeg” na cláusula “unit”

{*****
*  CapturaTela()
*  Fotografa a tela e salva
*
*  Autor: Jociel Eloy de Almeida
*}

FUNCTION CapturaTela( ARect: TRect ): TJPEGImage;
var
  hTela: HDC;
  oBmp: TBitmap;
begin
  oBmp := TBitmap.Create;
  Result := TJPEGImage.Create;
  try
    with oBmp, ARect do begin
      Width := Right – Left;
      Height := Bottom – Top;
      hTela := GetDC( 0 );
      try
        BitBlt( Canvas.Handle, 0, 0, Width, Height, hTela, Left, Top, SRCCOPY );
      finally
        ReleaseDC( 0, hTela );
      end;
    end;

    with Result do begin
      CompressionQuality := 25;
      Assign(oBmp);
      Compress;
    end;

  finally
    oBmp.Free;
  end;

end;

Como arrumar arquivos de texto pulando uma linha antes de todos os negritos

23 dez

1-Renomeio o arquivo para alguma coisa.rtt
2-Abra com um editor de textos como o Notepad++
3-Substitua \b por \cf0\par\b
4-salve o testo como coisa.rtf novamente e abra o arquivo em qualquer editor

Pronto! Todos os negritos começaram em uma linha abaixo!

Como retirar registros duplicados do banco usando delphi:

20 dez

1-Adicione os componentes no form e faça as conexoes dos componentes com o banco mudando as opções dos compoentes.

type
TFrm_lemon = class(TForm)
Ibq1: TIBQuery;
btn1:TButton;
Ibq2: TIBQuery;
ibt1: TIBTransaction;
Ibq3: TIBQuery;
….

2-Faça o procedimento no clicar do botão:

procedure TFrm_.btn1Click(Sender: TObject);
var codd:integer;
pall:string;
begin
ibq1.sql.Text:= ‘select palavra,count(palavra) from palavras ‘
+’group by palavra ‘
+’having count(palavra)>1 ‘ ;
ibq1.open;
ibq1.Last;
ibq1.First;

while not ibq1.Eof do
begin
pall:=ibq1.fieldbyname(‘palavra’).asstring;
ibq2.close;
ibq2.sql.Text:= ‘select * from palavras ‘
+’where palavra like ‘+””+pall+””;

ibq2.open;
ibq2.last;
ibq2.first;

if ibq2.recordcount>1 then
begin
ibq2.next;

codd:= ibq2.fieldbyname(‘codp’).asinteger;
ibq2.close;
try
ibq3.close;
ibq3.sql.Text:= ‘delete from palavras ‘
+’where codp=’+ inttostr(codd) ;
ibq3.execsql;
ibq3.close;
except

end;
end
else
break;
ibq1.Next;
end;
showmessage(‘ ‘);
beep();
ibq1.Close;
ibq2.Transaction.commit;
end;

boa sorte!