O que é fala incorporada?
A Fala inserida foi projetada para cenários de conversão de fala em texto e conversão de texto em fala no dispositivo em que a conectividade de nuvem está intermitente ou indisponível. Por exemplo, é possível usar a fala inserida em equipamentos industriais, em uma unidade de ar condicionado habilitada para voz ou em um carro que possa viajar fora do alcance. Você também pode desenvolver soluções de nuvem híbrida e offline. Para cenários em que seus dispositivos devem estar em um ambiente seguro, como um banco ou entidade governamental, você deve primeiro considerar contêineres desconectados.
Importante
A Microsoft limita o acesso à fala inserida. Você pode solicitar acesso através da revisão de acesso limitado de fala inserida dos Serviços de IA do Azure. Para obter mais informações, consulte Acesso limitado para fala inserida.
Requisitos de plataforma
A fala inserida está incluída no SDK de Fala (versão 1.24.1 e superior) para C#, C++ e Java. Consulte os Requisitos gerais de instalação do SDK de Fala para linguagem de programação e detalhes específicos da plataforma de destino.
Escolha o ambiente de destino
Requer o Android 7.0 (API nível 24) ou superior em um hardware Arm64 (arm64-v8a
) ou Arm32 (armeabi-v7a
).
O TTS inserido com vozes neurais só tem suporte para Arm64.
Limitações
A fala inserida só está disponível com SDKs C#, C++ e Java. Os outros SDKs de Fala, a CLI de Fala e as APIs REST não dão suporte a fala inserida.
O reconhecimento de fala inserido dá suporte apenas a formatos de áudio WAV mono de 16 bits, 8 kHz ou 16 kHz codificados por PCM.
As vozes neurais inseridas dão suporte a RIFF/RAW de 24 kHz, com um requisito de RAM de 100 MB.
Pacotes do SDK de fala inserida
Para aplicativos C# inseridos, instale o seguinte SDK de Fala para pacotes C#:
Pacote | Descrição |
---|---|
Microsoft.CognitiveServices.Speech | Necessário para usar o SDK de Fala |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Necessário para reconhecimento de fala inserido |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Necessário para síntese de fala inserida |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Necessário para reconhecimento e síntese de fala inserida |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Necessário para reconhecimento e síntese de fala inserida |
Para aplicativos C++ inseridos, instale o seguinte SDK de Fala para pacotes C++:
Pacote | Descrição |
---|---|
Microsoft.CognitiveServices.Speech | Necessário para usar o SDK de Fala |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Necessário para reconhecimento de fala inserido |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Necessário para síntese de fala inserida |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Necessário para reconhecimento e síntese de fala inserida |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Necessário para reconhecimento e síntese de fala inserida |
Escolha o ambiente de destino
Para aplicativos java inseridos, adicione client-sdk-embedded (.jar
) como uma dependência. Esse pacote dá suporte a fala híbrida, inserida e de nuvem.
Importante
Não adicione client-sdk no mesmo projeto, pois ele dá suporte apenas a serviços de fala em nuvem.
Siga estas etapas para instalar o SDK de Fala para Java usando o Apache Maven:
- Instale o Apache Maven.
- Abra um prompt de comando onde você deseja criar o novo projeto e crie um novo arquivo chamado
pom.xml
. - Copie o conteúdo XML a seguir em
pom.xml
:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk-embedded</artifactId> <version>1.40.0</version> </dependency> </dependencies> </project>
- Execute o comando Maven a seguir para instalar o SDK de Fala e as dependências.
mvn clean dependency:copy-dependencies
Modelos e vozes
Para a fala inserida, você precisa baixar os modelos de reconhecimento de fala para conversão de fala em texto e vozes para conversão de texto em fala. As instruções são fornecidas após a conclusão bem-sucedida do processo de revisão de acesso limitado.
Os seguintes modelos de conversão de fala em texto estão disponíveis: da-DK, de-DE, en-AU, en-CA, en-GB, en-IE, en-IN, en-NZ, en-US, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, pt-PT, zh-CN, zh-HK e zh-TW.
Todas as localidades de conversão de texto em fala aqui (exceto fa-IR, persa (Irã)) estão disponíveis prontas para uso com 1 voz feminina selecionada e/ou 1 selecionada. Damos as boas-vindas à sua entrada para nos ajudar a medir a demanda por mais idiomas e vozes.
Configuração de fala inserida
Para aplicativos conectados à nuvem, conforme mostrado na maioria dos exemplos de SDK de Fala, você usa o objeto SpeechConfig
com uma chave de recurso de Fala e uma região. Para fala inserida, você não usa um recurso de Fala. Em vez de um recurso de nuvem, você usa os modelos e vozes baixados em seu dispositivo local.
Use o objeto EmbeddedSpeechConfig
para definir o local dos modelos ou vozes. Se o aplicativo for usado para conversão de fala em texto e conversão de texto em fala, você poderá usar o mesmo objeto EmbeddedSpeechConfig
para definir o local dos modelos e vozes.
// Provide the location of the models and voices.
List<string> paths = new List<string>();
paths.Add("C:\\dev\\embedded-speech\\stt-models");
paths.Add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.FromPaths(paths.ToArray());
// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
"Microsoft Speech Recognizer en-US FP Model V8",
Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);
Dica
A função GetEnvironmentVariable
é definida no início rápido de conversão de fala em texto e no início rápido de conversão de texto em fala.
// Provide the location of the models and voices.
vector<string> paths;
paths.push_back("C:\\dev\\embedded-speech\\stt-models");
paths.push_back("C:\\dev\\embedded-speech\\tts-voices");
auto embeddedSpeechConfig = EmbeddedSpeechConfig::FromPaths(paths);
// For speech to text
embeddedSpeechConfig->SetSpeechRecognitionModel((
"Microsoft Speech Recognizer en-US FP Model V8",
GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig->SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat::Riff24Khz16BitMonoPcm);
// Provide the location of the models and voices.
List<String> paths = new ArrayList<>();
paths.add("C:\\dev\\embedded-speech\\stt-models");
paths.add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.fromPaths(paths);
// For speech to text
embeddedSpeechConfig.setSpeechRecognitionModel(
"Microsoft Speech Recognizer en-US FP Model V8",
System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);
Exemplos de código de fala inserido
Você pode encontrar exemplos de fala inserida pronta para usar no GitHub. Para comentários sobre projetos a partir do zero, consulte a documentação específica de amostras:
Você pode encontrar exemplos de fala inserida pronta para usar no GitHub. Para comentários sobre projetos a partir do zero, consulte a documentação específica de amostras:
Você pode encontrar exemplos de fala inserida pronta para usar no GitHub. Para comentários sobre projetos a partir do zero, consulte a documentação específica de amostras:
Fala híbrida
A fala híbrida com o objeto HybridSpeechConfig
usa o serviço de fala em nuvem por padrão e a fala inserida como um fallback caso a conectividade na nuvem seja limitada ou lenta.
Com a configuração de fala híbrida para conversão de fala em texto (modelos de reconhecimento), a fala inserida é usada quando a conexão com o serviço de nuvem falha após tentativas repetidas. O reconhecimento poderá continuar usando o serviço de nuvem novamente se a conexão for retomada posteriormente.
Com a configuração de fala híbrida para conversão de texto em fala (vozes), a síntese de nuvem e inserida é executada em paralelo e o resultado final é selecionado com base na velocidade da resposta. O melhor resultado é avaliado novamente em cada nova solicitação de síntese.
Fala na nuvem
Para fala em nuvem, use o objeto SpeechConfig
, conforme mostrado no início rápido de conversão de fala em texto e no início rápido de conversão de texto em fala. Para executar os inícios rápidos da fala inserida, você pode substituir SpeechConfig
por EmbeddedSpeechConfig
ou HybridSpeechConfig
. A maior parte dos outros códigos de síntese e reconhecimento de fala são os mesmos, seja usando a nuvem, a inserção ou a configuração híbrida.
Funcionalidades de vozes inseridas
Para vozes inseridas, é essencial observar que algumas marcas SSML podem não ter suporte no momento devido a diferenças na estrutura do modelo. Para obter informações detalhadas sobre as marcas SSML sem suporte, consulte a tabela a seguir.
Nível 1 | Nível 2 | Sub-valores | Suporte no NTTS inserido |
---|---|---|---|
audio | src | Não | |
indicador | Sim | ||
break | strength | Sim | |
time | Sim | ||
Silêncio | tipo | À esquerda, à cauda, à vírgula exata etc. | Não |
value | Não | ||
emphasis | level | Não | |
lang | Não | ||
lexicon | uri | Sim | |
matemáticas | Não | ||
msttsaudioduration | value | Não | |
msttsbackgroundaudio | src | Não | |
volume | Não | ||
Fadein | Não | ||
fadeout | Não | ||
msttsexpress-as | style | Não | |
styledegree | Não | ||
função | Não | ||
msttssilence | Não | ||
msttsviseme | tipo | redlips_front, FacialExpression | Não |
p | Sim | ||
phoneme | alphabet | ipa, sapi, ups, etc. | Sim |
ph | Sim | ||
Prosody | Contorno | Suporte ao nível de frases, nível de palavra somente en-US e zh-CN | Sim |
pitch | Sim | ||
range | Sim | ||
rate | Sim | ||
volume | Sim | ||
s | Sim | ||
say-as | interpret-as | caracteres, ortografia, number_digit, data etc. | Sim |
format | Sim | ||
detail | Sim | ||
sub | alias | Sim | |
speak | Sim | ||
voice | Não |