---
# System prepended metadata

title: AI影片翻譯與改變口型．20240127

---

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()
```

