跳到主要内容

Azure音频低语(预览)示例

nbviewer

该示例展示了如何使用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  # 将此标志设置为 True,如果您正在使用 Azure Active Directory。

使用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_keyAZURE_OPENAI_API_KEY
  • azure_ad_tokenAZURE_OPENAI_AD_TOKEN
  • api_versionOPENAI_API_VERSION
  • azure_endpointAZURE_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)