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:

  1. Instale o Apache Maven.
  2. Abra um prompt de comando onde você deseja criar o novo projeto e crie um novo arquivo chamado pom.xml.
  3. 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>
    
  4. 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