使用 OpenAI Whisper API 進行語音轉文字,方便字幕後製或內容整理

更新於 發佈於 閱讀時間約 6 分鐘

前提

註冊 OpenAI 的 API ,並取得 SECRET KEY,然後填到程式裡面的 openai.api_key 裡。

基本的 Python 知識以及 Debug 能力。

raw-image

程式碼, Python實現

import openai
from pydub import AudioSegment
import os
import codecs
import tempfile

# Set your OpenAI API key here
openai.api_key = 'your_openai_api_key'

def transcribe_audio_with_whisper(audio_file_path):
"""
Transcribe an audio file using OpenAI's Whisper API.

Args:
- audio_file_path: Path to the audio file to transcribe.

Returns:
- The transcribed text as a string.
"""
with open(audio_file_path, "rb") as audio_file:
response = openai.Audio.transcribe('whisper-1', audio_file)
return response['data']['text']

def split_and_transcribe_audio(file_path, segment_length_seconds=30):
try:
song = AudioSegment.from_file(file_path)
except Exception as e:
raise Exception(f"Error loading audio file: {e}")

segment_length_ms = segment_length_seconds * 1000 # Correct calculation of milliseconds
transcripts = []

with tempfile.TemporaryDirectory() as temp_dir:
for i, segment in enumerate([song[i:i+segment_length_ms] for i in range(0, len(song), segment_length_ms)]):
segment_file_path = os.path.join(temp_dir, f"segment_{i}.mp3")
segment.export(segment_file_path, format="mp3")

transcript = transcribe_audio_with_whisper(segment_file_path)
time_in_seconds = i * segment_length_seconds
timestamp = f"[{time_in_seconds // 60:02d}:{time_in_seconds % 60:02d}]"
transcripts.append(timestamp + " " + transcript)

output_file_name = os.path.splitext(os.path.basename(file_path))[0] + '.txt'
with codecs.open(output_file_name, 'w', encoding='utf-8') as f: # Using UTF-8 encoding
f.write("\n".join(transcripts))

# Example usage
split_and_transcribe_audio("test.mp3")

解釋

  1. 設置OpenAI API SECRET:需要在程式中設定你的OpenAI API鑰匙,以便使用Whisper API。
  2. transcribe_audio_with_whisper 函數
    • 功能:使用 OpenAI 的 Whisper API 轉寫給定的音訊檔案。
    • 參數:接受一個參數 audio_file_path,即需要轉寫的音訊檔案路徑。
    • 返回值:返回轉寫後的文字。
    • 實現方式:通過讀取音訊檔案並使用 openai.Audio.transcribe 方法來獲得轉寫結果。
  3. split_and_transcribe_audio 函數
    • 功能:將長音訊檔案分割成較小的片段(預設為30秒長),然後使用Whisper API轉寫每個片段。
    • 參數:file_path:長音訊檔案的路徑。segment_length_seconds:每個音訊片段的時長(秒),默認為30秒。
    • 過程:使用 AudioSegment.from_file 加載音訊檔案。根據指定的片段長度(毫秒)將音訊分割成多個片段。為每個片段創建一個臨時文件,然後將其導出為MP3格式。對每個片段使用 transcribe_audio_with_whisper 函數進行轉寫。將轉寫結果和對應的時間戳添加到轉寫列表中。
    • 輸出:將所有轉寫結果連同時間戳寫入到一個以原音訊檔案名命名的純文字文件中(換成 .txt)。

範例用法:程式最後展示了如何使用 split_and_transcribe_audio 函數來轉寫名為 "test.mp3" 的音訊檔案。


留言
avatar-img
留言分享你的想法!

































































結論 以下觀點只針對我看的房型、看區域的角度、跟符不符合我現在的需求而定。具有非常強烈的主觀意識,如果不喜歡可以當作看看笑笑就好,請不要找我吵架。 接待中心很大器,大廳很不錯。代銷一副想吵架的樣子,我真的不是友商來的間諜。(笑) 優點: 捷運近,家樂福近,運動中心近。 無聯通巷子內,安靜。
結論 以下觀點只針對我看的房型、看區域的角度、跟符不符合我現在的需求而定。具有非常強烈的主觀意識,如果不喜歡可以當作看看笑笑就好,請不要找我吵架。 接待中心很大器,大廳很不錯。代銷一副想吵架的樣子,我真的不是友商來的間諜。(笑) 優點: 捷運近,家樂福近,運動中心近。 無聯通巷子內,安靜。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
本文分享一年多使用NextCloud的心得,並說明如何使用Docker解決安裝繁瑣和PHP版本不相容的問題,包含詳細步驟與注意事項。
Thumbnail
寄一封信給 ihctw@ihctw.bid 內容不拘,我會回覆一封郵件,內有設定檔連結。下載後,訪問 https://immersivetranslate.com/ 依照瀏覽器選擇適當的插件,完成插件置頂與第一次翻譯後,開始接續設定選擇右邊選單的 「匯入/匯出」 然後點擊 「從檔案匯入」即可
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 206 | OpenAI ChatGPT 使用 中,我們要求 ChatGPT 使用 Python 程式產生費波南西序列,我們可以將此段程
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 生成式 AI 和 GPT 助手將滲透到日常應用中,從軟體開發的角度來看,未來將與過去大不相同,類似 ChatGPT 的模型將大大提高日常軟體開發的生產力,我們將釋放 G
Thumbnail
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 32中,展示了OpenAI的API如何使用,儘管 API 可以滿足許多需求,但它們也有其限制,例如,多用途 API 可能在所有任務
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
本文分享一年多使用NextCloud的心得,並說明如何使用Docker解決安裝繁瑣和PHP版本不相容的問題,包含詳細步驟與注意事項。
Thumbnail
寄一封信給 ihctw@ihctw.bid 內容不拘,我會回覆一封郵件,內有設定檔連結。下載後,訪問 https://immersivetranslate.com/ 依照瀏覽器選擇適當的插件,完成插件置頂與第一次翻譯後,開始接續設定選擇右邊選單的 「匯入/匯出」 然後點擊 「從檔案匯入」即可
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 206 | OpenAI ChatGPT 使用 中,我們要求 ChatGPT 使用 Python 程式產生費波南西序列,我們可以將此段程
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 生成式 AI 和 GPT 助手將滲透到日常應用中,從軟體開發的角度來看,未來將與過去大不相同,類似 ChatGPT 的模型將大大提高日常軟體開發的生產力,我們將釋放 G
Thumbnail
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 32中,展示了OpenAI的API如何使用,儘管 API 可以滿足許多需求,但它們也有其限制,例如,多用途 API 可能在所有任務
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。