首先你可以使用 Python 中的 requests
库来下载该音频文件,然后通过 open()
打开该文件并传递给 OpenAI Whisper API。
完整代码如下:
- 安装需要的库:
bash
pip install openai requests
- Python 代码:
python
OPENAI_API_KEY= "your openai_api_key"
client = OpenAI(api_key=OPENAI_API_KEY)
response = requests.get(output_url)
result = []
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav", dir=".") as temp_audio_file:
temp_audio_file.write(response.content)
temp_audio_file_path = temp_audio_file.name
print(f"Audio file saved to temporary file: {temp_audio_file_path}")
# 打开音频文件并进行转录
with open(temp_audio_file_path, "rb") as audio_file:
transcription = client.audio.transcriptions.create(
file=audio_file,
model="whisper-1",
response_format="verbose_json",
timestamp_granularities=["word"]
)
for word_info in transcription.words:
word = word_info.word
task_start_time = word_info.start
task_end_time = word_info.end
word_task = {
"word": word,
"start_time": task_start_time,
"end_time": task_end_time
}
result.append(word_task)
logger.info(f"打印结果:{result}")
1. 客户端初始化
python
client = OpenAI(api_key=OPENAI_API_KEY)
client
是一个与 OpenAI API 交互的客户端实例。api_key
是你用来认证的密钥,这里应该替换为你的 OpenAI API 密钥。OpenAI
是 OpenAI 提供的 Python 客户端,可以用来访问 GPT-3、Whisper、DALL-E 等服务。
2. 下载音频文件
python
response = requests.get(output_url)
- 通过
requests.get(output_url)
发送 HTTP GET 请求,下载指定 URL(output_url
)的内容(应该是一个音频文件)。 response.content
获取的是该音频文件的二进制内容。
3. 保存为临时音频文件
python
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav", dir=".") as temp_audio_file:
temp_audio_file.write(response.content)
temp_audio_file_path = temp_audio_file.name
print(f"Audio file saved to temporary file: {temp_audio_file_path}")
tempfile.NamedTemporaryFile
用于创建一个临时文件 ,并指定它的后缀为.wav
,表示这个临时文件将是一个 WAV 格式的音频文件。delete=False
表示临时文件在关闭时不会自动删除(稍后手动删除)。temp_audio_file.write(response.content)
将从response
中下载的音频数据写入临时文件。temp_audio_file.name
获取临时文件的路径,并将其存储到temp_audio_file_path
变量中。print
输出临时文件的路径,方便调试。
4. 使用 OpenAI Whisper 进行转录
python
with open(temp_audio_file_path, "rb") as audio_file:
transcription = client.audio.transcriptions.create( file=audio_file, model="whisper-1", response_format="verbose_json", timestamp_granularities=["word"] )
- 这部分代码打开刚刚创建的临时音频文件。
client.audio.transcriptions.create
调用 Whisper 模型进行音频转录:file=audio_file
:传递打开的音频文件。model="whisper-1"
:使用 Whisper 模型进行音频转录。response_format="verbose_json"
:指定返回的结果为详细的 JSON 格式。timestamp_granularities=["word"]
:指定返回每个单词的时间戳(开始时间和结束时间)。
5. 处理转录结果
python
for word_info in transcription.words:
word = word_info.word
task_start_time = word_info.start
task_end_time = word_info.end
word_task = { "word": word, "start_time": task_start_time, "end_time": task_end_time }
result.append(word_task)
transcription.words
是一个包含每个单词信息的列表。每个word_info
包含:word
:转录出的单词。start
:该单词的开始时间(单位通常是秒)。end
:该单词的结束时间。
word_task
是一个字典,用来存储每个单词的信息:包括单词、开始时间和结束时间。result.append(word_task)
将每个单词的信息添加到result
列表中。
总结
- 下载音频文件 :通过
requests
库从指定 URL 下载音频文件并保存为临时.wav
文件。 - 使用 Whisper 进行转录:通过 OpenAI 的 Whisper 模型对音频进行转录,获取每个单词的开始和结束时间。
- 存储转录结果 :将每个单词的时间戳信息存储到
result
列表中。 - 打印结果:通过日志记录器将转录结果打印出来。
可能的应用场景
- 音频转录服务(如字幕生成、语音识别)。
- 对音频进行更详细的时间戳标记,用于后续处理(如视频编辑、语音分析等)。