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

更新 發佈閱讀 7 分鐘

更新版

更穩定的版本
https://vocus.cc/article/68ced4a2fd89780001fc9266

前提

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

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

vocus|新世代的創作平台

程式碼, 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
Wei 的工程師聊什麼
4會員
12內容數
你可能也想看
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
瞭解讓AI寫文章的好處,包括提高效率、快速獲取答案和資料整理
Thumbnail
瞭解讓AI寫文章的好處,包括提高效率、快速獲取答案和資料整理
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
本文介紹如何設置OpenAI API密鑰並使用Whisper API轉寫音訊檔案。文章詳細說明了轉寫單個音訊檔案,以及將長音訊分割並轉寫的過程。透過範例演示,讀者可以學習如何將音訊轉寫為文字,提高工作效率。
Thumbnail
本文介紹如何設置OpenAI API密鑰並使用Whisper API轉寫音訊檔案。文章詳細說明了轉寫單個音訊檔案,以及將長音訊分割並轉寫的過程。透過範例演示,讀者可以學習如何將音訊轉寫為文字,提高工作效率。
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
合成聲音技術的未來充滿希望,也存在挑戰。OpenAI呼籲社會各界一起加強對這一新興技術的認識,並共同探索如何有效地利用這項技術,同時保護公眾免受潛在的負面影響。
Thumbnail
合成聲音技術的未來充滿希望,也存在挑戰。OpenAI呼籲社會各界一起加強對這一新興技術的認識,並共同探索如何有效地利用這項技術,同時保護公眾免受潛在的負面影響。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News