Gemini API and OpenAI Compatibility: Voice Transcription Development in Action
利用 Gemini-2.5-pro-exp,輕鬆整合 OpenAI 函式庫,實現高效語音轉文字功能
程式碼在這: https://github.com/jimmyliao/BwAI2025/blob/main/03_Get_started_OpenAI_Compatibility.ipynb
設定 Gemini API Key
Eng: Setup Gemini API Key
from openai import OpenAI
try:
# if you are running the notebook on Google Colab
# and if you have saved your API key in the
# Colab secrets
from google.colab import userdata
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
except:
# enter manually your API key here if you are not using Google Colab
GOOGLE_API_KEY="--enter-your-API-key-here--"
透過 OpenAI API 方式宣告 Client
Eng: Declare the client with OpenAI API format
# OpenAI client
client = OpenAI(
api_key=GOOGLE_API_KEY,
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
指定 Model 為 gemini-2.5-pro-exp-03-25
Eng: Specify gemini-2.5-pro-exp-03-25
as the default model
MODEL="gemini-2.5-pro-exp-03-25"
準備語音檔案,這裡我們使用了行政院廣播公共服務音檔下載區,114年4月廣播公益廣告月包 性別平等教育日華語音檔
Eng: Prepare the voice mp3 file, here we use one public voice file from Executive Yuan.
def encode_audio(audio_path):
with open(audio_path, 'rb') as audio_file:
audio_content = audio_file.read()
return base64.b64encode(audio_content).decode('utf-8')
base64_audio = encode_audio(audio_filename)
透過 OpenAI Chat Completions 格式呼叫
Eng: Call Chat Compeletions with OpenAI format
response = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt,
},
{
"type": "input_audio",
"input_audio": {
"data": base64_audio,
"format": "mp3"
}
}
],
}
],
)
其中 prompt 也很簡單
prompt = "轉錄這個音訊檔案。轉錄完成後,告訴我這可能與什麼相關。" # @param
結果
好的,這是音訊檔案的轉錄內容:
00:00 [男]: 你還記得去年
00:01 [男]: 4月20號性別平等教育日那天,
00:04 [男]: 我們有去看展覽嗎?
00:05 [女]: 記得啊,
00:06 [女]: 今年又有展覽嗎?
00:07 [男]: 有,
00:08 [男]: 今年的展覽是「元宇宙下的性別光影展:
00:11 [男]: 穿越虛實之境,反家啟程」。
00:14 [男]: 4月19號到5月11號,
00:15 [男]: 在國立台灣科學教育館七樓喔。
00:18 [女]: 哇,聽起來很吸引人欸。
00:19 [男]: 沒錯,
00:20 [男]: 有光影互動展區、
00:21 [男]: 手作活動、
00:22 [男]: 專題演講等等,
00:23 [男]: 帶領大家探討性別議題。
00:25 [女]: 那我們趕快揪朋友去看!
00:27 [旁白]: 以上廣告是由教育部提供。
這段音訊可能與以下內容相關:
這是一則由台灣教育部贊助的廣告,目的是宣傳一個名為「元宇宙下的性別光影展:穿越虛實之境,反家啟程」的展覽活動。
主題: 展覽聚焦於性別議題,並結合了元宇宙(Metaverse)這個新興科技概念。
內容: 展覽包含光影互動展區、手作活動、專題演講等。
時間與地點: 展期為 4月19日至5月11日,地點在國立台灣科學教育館七樓。
背景: 對話中提到了去年的「性別平等教育日」(通常是4月20日),暗示這個展覽可能與此紀念日或相關的教育推廣活動有關。
目的: 旨在吸引公眾(特別是可能對科技、社會議題、教育感興趣的人)前往參觀,並藉此探討性別議題。