如何使用OPENAI的Whisper功能进行音频字母提取功能

首先你可以使用 Python 中的 requests 库来下载该音频文件,然后通过 open() 打开该文件并传递给 OpenAI Whisper API。

完整代码如下:

  1. 安装需要的库:
bash 复制代码
pip install openai requests
  1. 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 列表中。

总结

  1. 下载音频文件 :通过 requests 库从指定 URL 下载音频文件并保存为临时 .wav 文件。
  2. 使用 Whisper 进行转录:通过 OpenAI 的 Whisper 模型对音频进行转录,获取每个单词的开始和结束时间。
  3. 存储转录结果 :将每个单词的时间戳信息存储到 result 列表中。
  4. 打印结果:通过日志记录器将转录结果打印出来。

可能的应用场景

  • 音频转录服务(如字幕生成、语音识别)。
  • 对音频进行更详细的时间戳标记,用于后续处理(如视频编辑、语音分析等)。
相关推荐
不解不惑3 天前
OpenAI whisper 语音识别服务器搭建
服务器·whisper·语音识别
许泽宇的技术分享4 天前
用 OpenAI Whisper + pyannote.audio 打造“谁在说什么”的全栈语音理解系统
macos·whisper·xcode
这儿有一堆花14 天前
使用 Whisper 转写语音的完整教学
人工智能·ai·whisper
数据饕餮1 个月前
Faster-Whisper命令和意图识别程序设计调优:上下文感知和领域词汇增强
whisper
落淼喵_G1 个月前
ubuntu部署whisper+speaker_large+qwen【一】
ubuntu·whisper
兔兔爱学习兔兔爱学习1 个月前
浏览器端实时语音采集 + WebSocket 传输 + 后端 Whisper + GPT 翻译 + 实时字幕返回
gpt·websocket·whisper
兔兔爱学习兔兔爱学习1 个月前
一个可本地运行的实时字幕翻译 Demo(Whisper + GPT + Streamlit),可以边说边出中英文字幕
gpt·whisper
数据饕餮1 个月前
Faster-Whisper唤醒词检测程序设计实战1
whisper
说话的鲸鱼1 个月前
‌Whisper模型在RTranslator中的实时语音识别优化:动态资源分配与负载均衡
whisper·负载均衡·语音识别
猫头虎1 个月前
DeepSeek刚刚开源了一个3B的 OCR模型:什么是DeepSeek-OCR?单张A100-40G每天可以处理20万+页文档
人工智能·开源·whisper·prompt·aigc·ocr·gpu算力