Início Rápido: conversão de texto em fala com o Serviço OpenAI do Azure

Neste início rápido, você usará o Serviço OpenAI do Azure para conversão de texto em fala com vozes do OpenAI.

As vozes disponíveis são: alloy, echo, fable, onyx, nova e shimmer. Para obter mais informações, consulte a Documentação de referência do Serviço OpenAI do Azure para conversão de texto em fala.

Pré-requisitos

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
AZURE_OPENAI_ENDPOINT O ponto de extremidade de serviço pode ser encontrado na seção Chaves e Ponto de extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o ponto de extremidade na página Implantações no Estúdio de IA do Azure. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. O Ponto de extremidade e as Chaves podem ser encontrados na seção Gerenciamento de recursos. Copie o ponto de extremidade e a chave de acesso, pois você precisa de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da interface do usuário de visão geral de um recurso do OpenAI do Azure no portal do Azure com o ponto de extremidade e o local das chaves de acesso realçados.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre a segurança dos serviços de IA, confira Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar uma solicitação e uma resposta REST

Em um shell Bash, execute o comando a seguir. Você precisa substituir YourDeploymentName pelo nome de implantação escolhido ao implantar o modelo de conversão de texto em fala. O nome da implantação não é necessariamente o mesmo nome do modelo. Inserir o nome do modelo resulta em um erro, a menos que você escolha um nome de implantação que seja idêntico ao nome do modelo subjacente.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/YourDeploymentName/audio/speech?api-version=2024-02-15-preview \
 -H "api-key: $AZURE_OPENAI_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
    "model": "tts-1-hd",
    "input": "I'm excited to try text to speech.",
    "voice": "alloy"
}' --output speech.mp3

O formato da sua primeira linha do comando com um ponto de extremidade de exemplo apareceria da seguinte forma https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \ curl.

Importante

Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte o artigo segurança dos serviços de IA do Azure.

Código-fonte | Pacote (npm) | Amostras

Pré-requisitos

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
AZURE_OPENAI_ENDPOINT O ponto de extremidade de serviço pode ser encontrado na seção Chaves e Ponto de extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o ponto de extremidade na página Implantações no Estúdio de IA do Azure. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. O Ponto de extremidade e as Chaves podem ser encontrados na seção Gerenciamento de recursos. Copie o ponto de extremidade e a chave de acesso, pois você precisa de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da interface do usuário de visão geral de um recurso do OpenAI do Azure no portal do Azure com o ponto de extremidade e o local das chaves de acesso realçados.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre a segurança dos serviços de IA, confira Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um aplicativo Node

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele. Em seguida, execute o comando npm init para criar um aplicativo de nó com um arquivo package.json.

npm init

Instalar a biblioteca de clientes

Instale as bibliotecas de cliente com:

npm install openai @azure/identity

O arquivo package.json do seu aplicativo será atualizado com as dependências.

Criar um arquivo de fala

  1. Crie um novo arquivo chamado Text-to-speech.js e abra-o em seu editor de código preferido. Copie o código a seguir para o arquivo Text-to-speech.js:

    const { writeFile } = require("fs/promises");
    const { AzureOpenAI } = require("openai");
    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    require("openai/shims/node");
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = "tts";
    const apiVersion = "2024-08-01-preview";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient() {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    
    async function generateAudioStream(
      client,
      params
    ) {
      const response = await client.audio.speech.create(params);
      if (response.ok) return response.body;
      throw new Error(`Failed to generate audio stream: ${response.statusText}`);
    }
    export async function main() {
      console.log("== Text to Speech Sample ==");
    
      const client = getClient();
      const streamToRead = await generateAudioStream(client, {
        model: deploymentName,
        voice: "alloy",
        input: "the quick brown chicken jumped over the lazy dogs",
      });
    
      console.log(`Streaming response to ${speechFilePath}`);
      await writeFile(speechFilePath, streamToRead);
      console.log("Finished streaming");
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
    
  2. Execute o script com o seguinte comando:

    node Text-to-speech.js
    

Código-fonte | Pacote (npm) | Amostras

Pré-requisitos

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://aoai-docs.openai.azure.com/.
AZURE_OPENAI_API_KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. O Ponto de extremidade e as Chaves podem ser encontrados na seção Gerenciamento de recursos. Copie o ponto de extremidade e a chave de acesso, pois você precisa de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da interface do usuário de visão geral de um recurso do OpenAI do Azure no portal do Azure com o ponto de extremidade e o local das chaves de acesso realçados.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre a segurança dos serviços de IA, confira Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um aplicativo Node

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele. Em seguida, execute o comando npm init para criar um aplicativo de nó com um arquivo package.json.

npm init

Instalar a biblioteca de clientes

Instale as bibliotecas de cliente com:

npm install openai @azure/identity

O arquivo package.json do seu aplicativo será atualizado com as dependências.

Criar um arquivo de fala

  1. Crie um novo arquivo chamado Text-to-speech.ts e abra-o em seu editor de código preferido. Copie o código a seguir para o arquivo Text-to-speech.ts:

    import { writeFile } from "fs/promises";
    import { AzureOpenAI } from "openai";
    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    import type { SpeechCreateParams } from "openai/resources/audio/speech";
    import "openai/shims/node";
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = "tts";
    const apiVersion = "2024-08-01-preview";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    
    async function generateAudioStream(
      client: AzureOpenAI,
      params: SpeechCreateParams
    ): Promise<NodeJS.ReadableStream> {
      const response = await client.audio.speech.create(params);
      if (response.ok) return response.body;
      throw new Error(`Failed to generate audio stream: ${response.statusText}`);
    }
    export async function main() {
      console.log("== Text to Speech Sample ==");
    
      const client = getClient();
      const streamToRead = await generateAudioStream(client, {
        model: deploymentName,
        voice: "alloy",
        input: "the quick brown chicken jumped over the lazy dogs",
      });
    
      console.log(`Streaming response to ${speechFilePath}`);
      await writeFile(speechFilePath, streamToRead);
      console.log("Finished streaming");
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
    

    A importação de "openai/shims/node" é necessária ao executar o código em um ambiente Node.js. Ele garante que o tipo de saída do método client.audio.speech.create esteja corretamente definido como NodeJS.ReadableStream.

  2. Compile o aplicativo com o seguinte comando:

    tsc
    
  3. Execute o aplicativo com o seguinte comando:

    node Text-to-speech.js
    

Pré-requisitos

Criar o aplicativo .NET

  1. Crie um aplicativo .NET usando o comando dotnet new:

    dotnet new console -n TextToSpeech
    
  2. Altere para o diretório do novo aplicativo:

    cd OpenAISpeech
    
  3. Instale a biblioteca de clientes Azure.OpenAI:

    dotnet add package Azure.AI.OpenAI
    

Autenticar-se e conectar-se ao OpenAI do Azure

Para fazer solicitações ao serviço OpenAI do Azure, você precisa do ponto de extremidade de serviço, bem como das credenciais de autenticação por meio de uma das seguintes opções:

  • O Microsoft Entra ID é a abordagem recomendada para autenticação nos serviços do Azure e é mais seguro do que as alternativas baseadas em chave.

  • As chaves de acesso permitem que você forneça uma chave secreta para se conectar ao recurso.

    Importante

    As chaves de acesso devem ser usadas com cuidado. Se a chave de acesso da conta for perdida ou colocada acidentalmente em um local não seguro, o serviço poderá ficar vulnerável. Qualquer pessoa que tenha a chave de acesso poderá autorizar solicitações no serviço OpenAI do Azure.

Obter o ponto de extremidade do OpenAI do Azure

O ponto de extremidade de serviço pode ser encontrado na seção Chaves e Ponto de extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o ponto de extremidade na página Implantações no Estúdio de IA do Azure. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.

Captura de tela da interface do usuário de visão geral de um recurso do OpenAI do Azure no portal do Azure com o ponto de extremidade e o local das chaves de acesso realçados.

Autenticação usando o Microsoft Entra ID

Se você optar por usar a autenticação do Microsoft Entra ID, precisará concluir o seguinte:

  1. Adicione o pacote Azure.Identity.

    dotnet add package Azure.Identity
    
  2. Atribua a função de Cognitive Services User à sua conta de usuário. Isso pode ser feito no portal do Azure no seu recurso OpenAI em Controle de acesso (IAM)>Adicionar atribuição de função.

  3. Entre no Azure usando o Visual Studio ou a CLI do Azure por meio de az login.

Autenticar usando chaves

O valor da chave de acesso pode ser encontrado na seção Chaves e Ponto de extremidade ao examinar seu recurso no portal do Azure. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Atualizar o código do aplicativo

  1. Substitua o conteúdo de program.cs pelo código a seguir e atualize os valores do espaço reservado com os seus próprios.

    using Azure;
    using Azure.AI.OpenAI;
    using Azure.Identity; // Required for Passwordless auth
    
    var endpoint = new Uri(
        Environment.GetEnvironmentVariable("YOUR_OPENAI_ENDPOINT") ?? throw new ArgumentNullException());
    var credentials = new DefaultAzureCredential();
    
    // Use this line for key auth
    // var credentials = new AzureKeyCredential(
    //    Environment.GetEnvironmentVariable("YOUR_OPENAI_KEY") ?? throw new ArgumentNullException());
    
    var deploymentName = "tts"; // Default deployment name, update with your own if necessary
    var speechFilePath = "YOUR_AUDIO_FILE_PATH";
    
    var openAIClient = new AzureOpenAIClient(endpoint, credentials);
    var audioClient = openAIClient.GetAudioClient(deploymentName);
    
    var result = await audioClient.GenerateSpeechAsync(
                    "the quick brown chicken jumped over the lazy dogs");
    
    Console.WriteLine("Streaming response to ${speechFilePath}");
    await File.WriteAllBytesAsync(speechFilePath, result.Value.ToArray());
    Console.WriteLine("Finished streaming");
    

    Importante

    Para produção, armazene e acesse suas credenciais usando um método seguro, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, confira segurança dos serviços de IA do Azure.

  2. Execute o aplicativo usando o comando dotnet run ou o botão Executar na parte superior do Visual Studio:

    dotnet run
    

    O aplicativo gera um arquivo de áudio no local especificado para a variável speechFilePath. Reproduza o arquivo no seu dispositivo para ouvir o áudio gerado.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, você deve primeiro excluir todos os modelos implantados.

Próximas etapas