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:

  1. Instale o Apache Maven.
  2. Abra um prompt de comando onde você deseja o novo projeto e crie um novo pom.xml arquivo.
  3. 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.37.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. 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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    Environment.GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    System.getenv("VOICE_KEY"));
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 Não
hora Não
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

Próximos passos