Azure OpenAI Whisper + Speech Services で動画に英語字幕・音声を自動生成する

日本語の動画に英語字幕と英語音声を自動で付与する方法をまとめました。Azure OpenAI ServiceのWhisperとSpeech Servicesを使用します。 概要 今回の目的は、日本語音声の動画を以下のように多言語対応させることです: 日本語版 : 元の動画(日本語音声、字幕なし) 英語版 : 英語音声 + 英語字幕 使用サービス サービス 用途 Azure OpenAI Service (Whisper) 日本語音声 → 英語テキストへの翻訳 Azure Speech Services (TTS) 英語テキスト → 英語音声の合成 FFmpeg 音声抽出・動画結合 手順 1. 環境準備 必要なツール # b # p r i F e P p F w y m t i p i h n e n o s g s n t の t ラ a イ a イ l ン l ブ l ス l ラ ト リ p ー f y ル f t ( m h m p o a e n c g - O d S o ) t e n v r e q u e s t s Azure設定(.env) A A A A Z Z Z Z U U U U R R R R E E E E _ _ _ _ O O O O P P P P E E E E N N N N A A A A I I I I _ _ _ _ E A D A N P E P D I P I P _ L _ O K O V I E Y E N Y M R T = E S = y N I h o T O t u _ N t r N = p - A 2 s a M 0 : p E 2 / i = 4 / - w - x k h 0 x e i 6 x y s - x p 0 x e 1 . r o p e n a i . a z u r e . c o m 2. 動画から音声を抽出 Azure Whisper APIには25MBのファイルサイズ制限があるため、音声を圧縮して抽出します。 ...

2026年1月21日 · 9 分 · Nakamura

音声資料に関するIIIFマニフェストファイルに画像を追加する

概要 以下のAudio Presentation with Accompanying Imageを試した結果の備忘録です。 https://iiif.io/api/cookbook/recipe/0014-accompanyingcanvas/ 以下はCloverで表示した例ですが、設定した画像がプレイヤーに表示されます。 https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json マニフェストファイルの記述 以下に例を格納しています。 https://github.com/nakamura196/ramp_data/blob/main/docs/demo/3571280/manifest.json 具体的には、以下のように、CanvasにaccompanyingCanvasを追加する必要がありました。 { " " " " } i t d a , d y u c " " " " " ] " p r c i t h w i : e a o d y e i t { } " t m " p i d e " : i p : e g t m " " " ] h o a " h h s i t i t " n n " : t " " d y t { } t C " y h " : : " p e p a : i t " : : e m " " " " } " s n n t C 1 [ " s i t m b , t : 1 g p a 1 0 " : " d y o o " " " " " a / a 5 C s n 0 2 h : " p t d i t h w f r / s 6 a : 2 4 t " : e i y d y e i o g n " . n / a 4 , t A [ " v " " p i d r e a , 0 / s , p n " : a : : e g t m t k 7 a n " s n h t " h h a " a 9 s a , : t " i { " : t " t : m 9 " k t t A o h " : " u 9 : a / a p n n t " : : " r 9 m n t s n " t I 1 h a 9 { u a i : : p m 1 0 " t 1 9 r k o t s a 0 2 i t 9 9 a a n / a " : g 2 4 m p 6 9 1 m P n t p / e 4 , a s . 9 9 u a a i a / " , g : g 9 6 r g k o i n , e / i 9 . a e a n n a / / t 8 g 1 " m " t k j n h , i 9 , u , i a p a u t 6 r n m e k b h . a g u g a . u g 1 " r " m i b i 9 , a u o . t 6 1 r / i h . 9 a r o u g 6 1 a / b i . 9 m r . t g 6 p a i h i . _ m o u t g d p / b h i a _ r . u t t d a i b h a a m o . u / t p / i b d a _ r o . e / d a / i m d a m r o o e t p a / / m a _ m r 3 o / d p a 5 / d a _ m 7 3 e t d p 1 5 m a a _ 2 7 o / t d 8 1 / d a a 0 2 3 e / t / 8 5 m d a c 0 7 o e / a / 1 / m d n c 2 3 o e v a 8 5 / m a n 0 7 3 o s v / 1 5 / " a c 2 7 3 , s a 8 1 5 / n 0 2 7 a v / 8 1 c a c 0 2 c s a / 8 o / n 3 0 m a v 5 / p c a 7 c a c s 1 a n o / 2 n y m a 8 v i p c 0 a n a c _ s g n o s / " y m u a , i p m c n a m c g n a o / y r m a i y p n n _ a n g i n o / m y t a a i a n g n t n e g i o . / o t j a n a p n / t g n p i " o a o , t g n a e / t " i i , m o a n g / e p " a , g e " わかりにくいですが、iiif_prezi3を使った記述例です。create_accompanying_canvas()によってaccompanyingCanvasを作成し、それをcanvasに関連づけています。 ...

2024年7月12日 · 11 分 · Nakamura

IIIF Audio/Visual: 複数のvttファイルを記述する

概要 IIIFを用いたAudio/Visual資料の記述について、複数のvttファイルを記述する方法に関する備忘録です。 ここでは、以下のように、日英の文字起こしテキストを記述します。 https://ramp.avalonmediasystem.org/?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json マニフェストファイルの記述 以下に例を格納しています。 https://github.com/nakamura196/ramp_data/blob/main/docs/demo/3571280/manifest.json 以下の記事も参考にしてください。 具体的には、以下のように複数のアノテーションとして記述することで、rampビューアによって正しく処理されました。 " a n n o t a ] t i { } o n " " " ] s i t i " d y t { } { } : " p e , : e m " " " } " " } " " " " } " " } " [ " s i t l , m b , t i t l , m b , t " : " d y a " ] o o " " " " } a d y a " ] o o " " " " } a h : " p b j t d i t f l r " p b j t d i t f l r t " : e e a " i y d y o a " ] g : e e a " i y d y o a " ] g t A [ " l " 日 v " " p r b j e " l " E v " " p r b j e p n " : " : 本 a : : e m e a " t " : " : n a : : e m e a " t s n h : 語 t " a l " 日 " h : g t " a l " E " : t " [ i { " : t " : 本 : t " [ l i { " : t " : n : t t A { ( o h " : 語 t A { i o h " : g / a p n m n t " : [ " p n s n t " : [ l " n t s n a " t T { ( h s n h " t T { i h a i : c : p e " m t : : p e " s t k o t h s x t a t t ( s x t h t a n / a i " : t e c p / a m " : t e p m P n t n s / " x h s n t a s / " x ( s u a a i e u / , t i : a i c u / , t m : r g k o - p n / n / k o h p n / a / a e a n g p a v e / a n i p a v c / 1 " m " e l k t - n m " n l k t h n 9 , u , n e a t g a u , e e a t i a 6 r e m m " e k r - m m " n k . a r e u , n a a g e u , e a g 1 a n r e m 1 e n r - m i 9 t t a r u 9 n t a g u t 6 e i 1 a r 6 e i 1 e r h . d n 9 t a . r n 9 n a u g ) g 6 e 1 g a g 6 e 1 b i " " . d 9 i t " . r 9 . t , g ) 6 t e , g a 6 i h i " . h d i t . o u t g u ) t e g / b h i b " h d i r . u t . u ) t a i b h i b " h m o . u o . u p / i b / i b _ r o . r o . d a / i a / i a m r o m r o t p a / p a / a _ m r _ m r / d p a d p a d a _ m a _ m e t d p t d p m a a _ a a _ o / t d / t d / d a a d a a 3 e / t e / t 5 m d a m d a 7 o e / o e / 1 / m d / m d 2 3 o e 3 o e 8 5 / m 5 / m 0 7 3 o 7 3 o / 1 5 / 1 5 / c 2 7 3 2 7 3 a 8 1 5 8 1 5 n 0 2 7 0 2 7 v / 8 1 / 8 1 a c 0 2 c 0 2 s a / 8 a / 8 / n 3 0 n 3 0 p v 5 / v 5 / a a 7 c a 7 c g s 1 a s 1 a e / 2 n / 2 n / a 8 v a 8 v 2 n 0 a n 0 a " n . s n _ s , o v " o e " t t t n a t a . t " t v i , i t o o t n n " / / , w w e e b b v v t t t t " / , 2 " , なお、Cloverでは、2つの文字起こしテキストが連続して表示されました。 ...

2024年7月12日 · 9 分 · Nakamura

字幕付きの音声ファイルをIIIFビューアで表示する

概要 字幕付きの音声ファイルをIIIFビューアで表示する機会がありましたので、備忘録です。 国立国会図書館 歴史的音源で公開されている「日本のアクセントと言葉調子(下)」を対象に、OpenAIのSpeech to textを使用しています。文字起こし結果には誤りが含まれていますので、その点はご注意ください。 以下は、Rampでの表示例です。 https://ramp.avalonmediasystem.org/?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下は、Cloverでの表示例です。 https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下は、Aviaryでの表示例です。こちらについては、残念ながら今回使用したマニフェストファイルの形式では、文字起こしテキストは表示できませんでした。 https://iiif.aviaryplatform.com/player?manifest=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下、これらのマニフェストファイルの作成方法について紹介します。 mp4ファイルの準備 以下の記事を参考に、mp4ファイルを取得します。 vttファイルの作成 OpenAIのAPIを使用して、文字起こしを行います。 f c a t w r l u r i o i d a t m e i n h n o s m f r f o t _ c o i e o i p f r d l s p l e = i i e e p e e n l p l = o n . a O e t = a n ( w i p = " u s o r e = w d e u i i n o h i _ t t m A p c i o f p e p I e l s _ o u ( o ( n i p f r t t r a ( e e i m _ r t p o n r l a v a i u t - e t t n O _ t . 1 , = t s p k p a " " _ c e e u u , v p r n y t d t a i A = _ i t t p I o m o " h t s p . ) , ) . 4 t g _ r " e p a w t a n " e t s , n h c v , r e ( i n " " p c O r t o P b i d E " o i N ) n n A s g I . = _ c " A r u P e t I a f _ t - K e 8 E ( " Y ) " ) a ) s f i l e : マニフェストファイルの作成 不完全なコードですが、以下のようなプログラムによって、マニフェストファイルを作成します。 ...

2024年7月10日 · 7 分 · Nakamura