Azure 音频耳语(预览)示例

此示例演示了如何使用 Azure OpenAI Whisper 模型转录音频文件。

设置

首先,我们安装必要的依赖项并导入我们将使用的库。

! pip install "openai>=1.0.0,<2.0.0"
! pip install python-dotenv
import os
import openai
import dotenv

dotenv.load_dotenv()

身份验证

Azure OpenAI 服务支持多种身份验证机制,包括 API 密钥和 Azure Active Directory 令牌凭据。

use_azure_active_directory = False  # 如果您正在使用 Azure Active Directory,请将此标志设置为 True

使用 API 密钥进行身份验证

要设置 OpenAI SDK 以使用 Azure API 密钥,我们需要将 api_key 设置为与你的终结点关联的密钥(你可以在 Azure 门户 的“资源管理”下的“密钥和终结点”中找到此密钥)。你还可以在此处找到资源的终结点。

if not use_azure_active_directory:
    endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
    api_key = os.environ["AZURE_OPENAI_API_KEY"]

    client = openai.AzureOpenAI(
        azure_endpoint=endpoint,
        api_key=api_key,
        api_version="2023-09-01-preview"
    )

使用 Azure Active Directory 进行身份验证

现在让我们看看如何通过 Azure Active Directory 进行身份验证。我们将首先安装 azure-identity 库。此库将提供我们进行身份验证所需的令牌凭据,并通过 get_bearer_token_provider 帮助函数帮助我们构建令牌凭据提供程序。建议使用 get_bearer_token_provider 而不是向 AzureOpenAI 提供静态令牌,因为此 API 会自动为你缓存和刷新令牌。

有关如何设置 Azure Active Directory 身份验证与 Azure OpenAI 的详细信息,请参阅文档

! pip install "azure-identity>=1.15.0"
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

if use_azure_active_directory:
    endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
    api_key = os.environ["AZURE_OPENAI_API_KEY"]

    client = openai.AzureOpenAI(
        azure_endpoint=endpoint,
        azure_ad_token_provider=get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"),
        api_version="2023-09-01-preview"
    )

注意:如果未提供以下参数,AzureOpenAI 将从其对应的环境变量中推断它们:

  • api_key 来自 AZURE_OPENAI_API_KEY
  • azure_ad_token 来自 AZURE_OPENAI_AD_TOKEN
  • api_version 来自 OPENAI_API_VERSION
  • azure_endpoint 来自 AZURE_OPENAI_ENDPOINT

部署

在本节中,我们将使用 whisper-1 模型创建一个部署来转录音频文件。

部署:在 Azure OpenAI Studio 中创建

让我们部署一个模型以供 whisper 使用。转到 https://portal.azure.com,找到你的 Azure OpenAI 资源,然后导航到 Azure OpenAI Studio。单击“部署”选项卡,然后为你想要用于 whisper 的模型创建部署。你为模型指定的部署名称将在下面的代码中使用。

deployment = "whisper-deployment" # 在此处填写门户中的部署名称

音频转录

音频转录,也称为语音到文本,是将口语转换为文本的过程。使用 openai.Audio.transcribe 方法将音频文件流转录为文本。

你可以从 GitHub 上的 Azure AI Speech SDK 存储库 获取示例音频文件。

# 下载示例音频文件
import requests

sample_audio_url = "https://github.com/Azure-Samples/cognitive-services-speech-sdk/raw/master/sampledata/audiofiles/wikipediaOcelot.wav"
audio_file = requests.get(sample_audio_url)
with open("wikipediaOcelot.wav", "wb") as f:
    f.write(audio_file.content)
transcription = client.audio.transcriptions.create(
    file=open("wikipediaOcelot.wav", "rb"),
    model=deployment,
)
print(transcription.text)