O que é a fala incorporada?
O Embedded Speech foi concebido para cenários de conversão de voz em texto no dispositivo e de conversão de texto em voz em que a conectividade na nuvem é intermitente ou não está disponível. Por exemplo, você pode usar a fala incorporada em equipamentos industriais, uma unidade de ar condicionado habilitada para voz ou um carro que pode 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 incorporada. Você pode solicitar acesso por meio da revisão de acesso limitado de fala incorporada do Azure AI Speech. Para obter mais informações, consulte Acesso limitado para fala incorporada.
Requisitos de plataforma
A fala incorporada 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 Speech SDK para obter detalhes específicos da linguagem de programação e da plataforma de destino.
Escolha o seu ambiente de destino
Requer Android 7.0 (nível de API 24) ou superior no hardware Arm64 (arm64-v8a
) ou Arm32 (armeabi-v7a
).
TTS incorporado com vozes neurais só é suportado no Arm64.
Limitações
A fala incorporada só está disponível com C#, C++ e Java SDKs. Os outros SDKs de fala, CLI de fala e APIs REST não oferecem suporte a fala incorporada.
O reconhecimento de voz incorporado suporta apenas formatos de áudio WAV codificados em PCM mono de 16 bits, 8 kHz ou 16 kHz.
As vozes neurais incorporadas suportam 24 kHz RIFF/RAW, com um requisito de RAM de 100 MB.
Pacotes SDK de fala incorporados
Para aplicativos incorporados em C#, instale os seguintes pacotes do Speech SDK for C#:
Pacote | Description |
---|---|
Microsoft.CognitiveServices.Speech | Necessário para usar o SDK de fala |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Necessário para reconhecimento de fala incorporado |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Necessário para síntese de fala incorporada |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Necessário para reconhecimento e síntese de fala incorporados |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Necessário para reconhecimento e síntese de fala incorporados |
Para aplicativos incorporados em C++, instale os seguintes pacotes do Speech SDK for C++:
Pacote | Description |
---|---|
Microsoft.CognitiveServices.Speech | Necessário para usar o SDK de fala |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Necessário para reconhecimento de fala incorporado |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Necessário para síntese de fala incorporada |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Necessário para reconhecimento e síntese de fala incorporados |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Necessário para reconhecimento e síntese de fala incorporados |
Escolha o seu ambiente de destino
Para aplicações Java incorporadas, adicione client-sdk-embedded (.jar
) como uma dependência. Este pacote suporta cloud, embedded, e fala híbrida.
Importante
Não adicione client-sdk no mesmo projeto, pois ele suporta apenas serviços de fala na 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 o novo projeto e crie um novo
pom.xml
arquivo. - Copie o seguinte conteúdo XML para
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.42.0</version> </dependency> </dependencies> </project>
- Execute o seguinte comando Maven para instalar o SDK de fala e dependências.
mvn clean dependency:copy-dependencies
Modelos e vozes
Para fala incorporada, você precisa baixar os modelos de reconhecimento de fala para fala para texto e vozes para texto para 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 fala para 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 texto para fala aqui (exceto fa-IR, persa (Irã)) estão disponíveis prontas para uso com 1 voz feminina e/ou 1 voz masculina selecionada. Agradecemos a sua contribuição para nos ajudar a avaliar a procura de mais línguas e vozes.
Configuração de voz incorporada
Para aplicativos conectados à nuvem, conforme mostrado na maioria dos exemplos do SDK de fala, você usa o SpeechConfig
objeto com uma chave de recurso de fala e região. Para fala incorporada, você não usa um recurso de fala. Em vez de um recurso de nuvem, você usa os modelos e vozes baixados para seu dispositivo local.
Use o EmbeddedSpeechConfig
objeto para definir a localização dos modelos ou vozes. Se o seu aplicativo for usado para fala para texto e texto para fala, você poderá usar o mesmo EmbeddedSpeechConfig
objeto para definir a localização 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);
Gorjeta
A GetEnvironmentVariable
função é definida no guia de início rápido de fala para texto e início rápido de texto para 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 incorporado
Você pode encontrar exemplos de fala incorporados prontos para uso no GitHub. Para comentários sobre projetos a partir do zero, consulte exemplos de documentação específica:
Você pode encontrar exemplos de fala incorporados prontos para uso no GitHub. Para comentários sobre projetos a partir do zero, consulte exemplos de documentação específica:
Você pode encontrar exemplos de fala incorporados prontos para uso no GitHub. Para comentários sobre projetos a partir do zero, consulte exemplos de documentação específica:
Discurso híbrido
A fala híbrida com o objeto usa o serviço de fala na nuvem por padrão e a fala incorporada como um fallback caso a HybridSpeechConfig
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 incorporada é usada quando a conexão com o serviço de nuvem falha após repetidas tentativas. O reconhecimento pode 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 embutida e em nuvem é executada em paralelo e o resultado final é selecionado com base na velocidade de resposta. O melhor resultado é novamente avaliado a cada novo pedido de síntese.
Fala na nuvem
Para fala na nuvem, use o SpeechConfig
objeto, conforme mostrado no Guia de início rápido de fala para texto e Guia de início rápido de texto para fala. Para executar os guias de início rápido para fala incorporada, você pode substituir SpeechConfig
por EmbeddedSpeechConfig
ou HybridSpeechConfig
. A maioria dos outros códigos de reconhecimento e síntese de fala são os mesmos, seja usando configuração em nuvem, incorporada ou híbrida.
Recursos de vozes incorporadas
Para vozes incorporadas, é essencial observar que determinadas tags SSML podem não ser suportadas atualmente devido a diferenças na estrutura do modelo. Para obter informações detalhadas sobre as tags SSML sem suporte, consulte a tabela a seguir.
Nível 1 | Nível 2 | Subvalores | Suporte em NTTS incorporado |
---|---|---|---|
áudio | src | Não | |
marcador | Sim | ||
pausa | Força | Sim | |
hora | Sim | ||
silêncio | tipo | Chumbo, Tailing, Vírgula-exata, etc. | Não |
valor | Não | ||
Ênfase | nível | Não | |
lang | Não | ||
léxico | uri | Sim | |
matemática | Não | ||
MSTTSaudioDuration | valor | Não | |
msttsbackgroundaudio | src | Não | |
volume | Não | ||
desvanecimento | Não | ||
desvanecimento | Não | ||
MSTTSEXPRESS-AS | style | Não | |
estilograu | Não | ||
função | Não | ||
msttssilence | Não | ||
MSTTSVISEME | tipo | redlips_front, Expressão Facial | Não |
p | Sim | ||
fonema | alfabeto | IPA, SAPI, UPS, etc. | Sim |
pH | Sim | ||
prosódia | contorno | Suporte de nível de frases, nível de palavras apenas en-US e zh-CN | Sim |
Lote | Sim | ||
range | Sim | ||
Avaliar | Sim | ||
volume | Sim | ||
s | Sim | ||
diga-as | interpretar-como | caracteres, ortografia, number_digit, data, etc. | Sim |
format | Sim | ||
detalhe | Sim | ||
sub | alias | Sim | |
falar | Sim | ||
voice | Não |