使用 OpenAI 进行音频信息提取¶
本示例展示如何使用 Instructor 结合 OpenAI 的音频能力,从音频文件中提取结构化信息。示例展示了如何处理音频输入并将特定字段提取到 Pydantic 模型中。
先决条件¶
- 具有访问 GPT-4 音频模型权限的 OpenAI API 密钥
- 一个 WAV 格式的音频文件
- 已安装并支持 OpenAI 的 Instructor 库
代码示例¶
from openai import OpenAI
from pydantic import BaseModel
import instructor
from instructor.multimodal import Audio
import base64
# Initialize the OpenAI client with Instructor
client = instructor.from_openai(OpenAI())
# Define the structure for extracted information
class Person(BaseModel):
name: str
age: int
# Read and encode the audio file
with open("./output.wav", "rb") as f:
encoded_string = base64.b64encode(f.read()).decode("utf-8")
# Extract information from the audio
resp = client.chat.completions.create(
model="gpt-4-audio-preview",
response_model=Person,
modalities=["text"],
audio={"voice": "alloy", "format": "wav"},
messages=[
{
"role": "user",
"content": [
"Extract the following information from the audio",
Audio.from_path("./output.wav"),
],
},
],
)
print(resp)
# Example output: Person(name='Jason', age=20)
工作原理¶
-
首先,我们导入所需的库,包括来自
instructor.multimodal
的Audio
类。 -
我们定义了一个 Pydantic 模型
Person
,用于指定我们想要从音频中提取的信息结构 name
:人物姓名-
age
:人物年龄 -
音频文件被读取并以 base64 格式编码。
-
我们使用 OpenAI 具有音频能力的模型来处理音频并提取指定信息
model
参数指定了 GPT-4 音频模型response_model
告诉 Instructor 根据我们的Person
模型构建输出结构modalities
指定我们想要文本输出audio
参数配置音频特定设置-
在消息中,我们使用
Audio.from_path()
来包含音频文件 -
响应会被自动解析到我们的 Pydantic 模型中,使得提取的信息可以轻松地以结构化格式访问。
用例¶
这种模式尤其适用于
- 转录和提取录音采访中的信息
- 处理语音消息或音频笔记
- 从语音输入自动填充表格
- 基于语音的数据输入系统
提示¶
- 确保您的音频文件是支持的格式(本示例中是 WAV)
- 音频模型在语音清晰且背景噪音最小的情况下效果最好
- 考虑音频文件的长度,因为模型可能有特定的限制
- 构建您的 Pydantic 模型,使其与您期望提取的信息相匹配