AI影片翻譯與改變口型.20240127 ### 本週分享 1. 環境安裝 1. Git, Anaconda, Python 3.10.6, Homebrew, Stable Diffusion 2. [參考文件](<https://ivonblog.com/posts/stable-diffusion-webui-manuals/installation/macos-installation/>) 3. mac m1 gpu error:於 webui-user.sh 加入以下參數 ``` export COMMANDLINE_ARGS="--medvram --opt-split-attention --precision full --no-half --skip-torch-cuda-test" ``` 3. Rask AI: 1. [數位時代:"Rask AI實測!一鍵把中文翻譯成60種語言、支援「原聲配音」,究竟有多好用?]( <https://www.bnext.com.tw/article/75357/rask-ai-video-translate>) 1. [Lip-Sync Multi-Speaker](<https://www.youtube.com/watch?v=WKkNCUSAgtw>) 1. [Rask AI 官網](<https://www.rask.ai/>) 4. 如何自建服務(流程架構) 1. API使用:Translate API和Text-to-Speech API 2. Speech-to-Text(stt),Text-to-Speech(tts) 3. OpenCV 讀取視頻 4. moviepy 提取音頻 5. what is OpenCV OpenCV is the world's biggest computer vision library. It's open source, contains over 2500 algorithms and is operated by the non-profit Open Source Vision Foundation. 1. [OpenCV 官網](<https://opencv.org/>) 2. [OpenCV github](<https://github.com/opencv/opencv>) ![截圖 2024-01-27 上午11.08.03](https://hackmd.io/_uploads/SyajQxfq6.png) 1. 預計待辦 1. python api 教學串接google/chatgpt api ----------------------------------------------- ### 實作流程 1. 環境套件 ```python pip install opencv-python pip install google-cloud-translate pip install google-cloud-texttospeech ``` 1. 導入套件庫:在Python腳本中導入所需的庫,以便使用它們: ```python import cv2 from google.cloud import translate_v2 from google.cloud import texttospeech ``` 1. 初始化Google Cloud API: * 在Google Cloud Console上創建一個專案。 * 啟用Translate API和Text-to-Speech API。 * 生成相應的API密鑰並保存到一個JSON文件中,例如 credentials.json。 * 設置環境變數以指定你的API密鑰文件的路徑: ```python import os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/your/credentials.json" translate_client = translate_v2.Client() tts_client = texttospeech.TextToSpeechClient() ``` 1. 讀取視頻並進行人臉檢測: 使用OpenCV讀取視頻,並使用人臉檢測庫(例如dlib或OpenCV自帶的人臉檢測)檢測視頻中的人臉。 1. 提取語音並進行翻譯: * 使用視頻處理工具(例如moviepy)從視頻中提取音頻。 * 使用Google Cloud的語音識別API將音頻轉換為文本: ```python # 使用你選擇的語音識別庫,這裡以Google Cloud Speech為例 # (需要將語音檔上傳至Google Cloud Storage並取得URI) response = translate_client.recognize("gs://your-bucket/your-audio-file.wav", language_code="zh-TW") text = response.results[0].alternatives[0].transcript ``` * 使用Translate API進行翻譯: ```python translation = translate_client.translate(text, target_language="en") translated_text = translation["input"] ``` 1. 生成新的語音: 使用Text-to-Speech API生成翻譯後的語音: ```python synthesis_input = texttospeech.SynthesisInput(text=translated_text) voice = texttospeech.VoiceSelectionParams(language_code="en", name="en-US-Wavenet-D", ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL) audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.LINEAR16) response = tts_client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config) ``` 1. 人臉替換: 使用人臉替換庫(例如OpenCV)將原視頻中的人臉替換為模擬說話的人物的臉部。 1. 保存最終結果: 使用OpenCV或視頻處理庫將處理後的視頻保存到文件。 * 使用OpenCV讀取視頻可以使用cv2.VideoCapture類別。以下是一個簡單的示例,展示如何使用OpenCV讀取視頻: ``` import cv2 # 設定視頻文件的路徑 video_path = 'path/to/your/video.mp4' # 替換成實際的視頻文件路徑 # 創建一個VideoCapture對象 cap = cv2.VideoCapture(video_path) # 檢查是否成功打開視頻 if not cap.isOpened(): print("無法打開視頻文件.") exit() # 逐幀讀取視頻 while True: # 讀取一幀 ret, frame = cap.read() # 檢查是否成功讀取幀 if not ret: print("無法讀取幀.") break # 在這裡進行視頻處理,例如顯示視頻幀 cv2.imshow('Video Frame', frame) # 如果按下 'q' 鍵,退出迴圈 if cv2.waitKey(25) & 0xFF == ord('q'): break # 釋放VideoCapture對象和關閉視窗 cap.release() cv2.destroyAllWindows() ```