• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    對話式人工智能

    使用 NVIDIA NIM 微服務實現語音和翻譯功能,快速賦予應用語音能力

    NVIDIA NIM NVIDIA AI Enterprise 的一部分,為自行托管的 GPU 加速推理微服務提供容器,用于跨云、數據中心和工作站的預訓練和自定義 AI 模型。NIM 微服務現已支持 語音和翻譯

    新的語音和翻譯微服務利用 NVIDIA Riva ,提供 自動語音識別(ASR) 神經網絡機器翻譯(NMT) 文本轉語音(TTS) 服務。

    通過 NVIDIA 語音和翻譯 NIM 微服務,將多語種語音功能集成到您的應用中,不僅能提供先進的自動語音識別(ASR)、神經機器翻譯(NMT)和文本轉語音(TTS),還可增強全球用戶體驗和可訪問性。無論您是構建客戶服務機器人、交互式語音助手,還是構建多語種內容平臺,這些 NIM 微服務都針對大規模高性能 AI 推理進行了優化,并提供準確性和靈活性,以盡可能減少開發工作量為您的應用提供語音支持。

    在本文中,您將學習如何使用 NVIDIA API Catalog 中的交互式語音和翻譯模型接口,直接通過瀏覽器執行基本推理任務(例如轉錄語音、翻譯文本和生成合成語音)。您還將學習如何在基礎設施上運行這些靈活的微服務,通過 API 訪問這些服務,以及如何將它們無縫集成到您的應用中。

    借助語音和翻譯 NIM 進行快速推理?

    API Catalog 中提供了語音 NIM 微服務,您可以在其中使用交互式瀏覽器 UI 輕松執行推理任務。只需單擊按鈕,即可轉錄英語語音,在 30 多種語言之間翻譯文本,或將文本轉換為自然發音的語音。API Catalog 為探索語音和翻譯 NIM 微服務的基本功能提供了便捷的起點。

    這些工具的真正強大之處在于,它們能夠靈活地部署在數據駐留的任何位置。您可以在任何兼容的 NVIDIA GPU 上運行這些微服務,通過 API 訪問這些微服務,并將其無縫集成到您的應用中。這種通用性使您能夠在本地工作站、云和數據中心基礎設施等環境中部署語音 NIM 微服務,并提供根據您的需求量身定制的可擴展選項。

    使用 NVIDIA Riva Python 客戶端運行語音和翻譯 NIM 微服務

    本節將指導您克隆 NVIDIA-riva/python-clients GitHub 庫,并使用提供的腳本在位于 grpc.nvcf.nvidia.com:443 的 NVIDIA API Catalog Riva 端點上運行簡單的推理任務。

    要快速測試語音 NIM 微服務,請導航至 API Catalog 中的 NIM 登陸頁面,然后單擊“Try API”選項卡。請注意,要使用這些命令,您需要 NVIDIA API 密鑰。如果您沒有 NVIDIA API 密鑰,只需單擊“Try API”選項卡右上角的“Get API Key”按鈕即可。繼續閱讀,了解您可以執行的操作的一些示例。

    在流式傳輸模式下轉錄音頻?

    運行以下命令以實時轉錄音頻文件。

    python python-clients/scripts/asr/transcribe_file.py \
        --server grpc.nvcf.nvidia.com:443 --use-ssl \
        --metadata function-id "1598d209-5e27-4d3c-8079-4751568b1081" \
        --metadata "authorization" "Bearer
    $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC" \
        --language-code en-US \
        --input-file <path_to_audio_file>

    將文本從英語翻譯為德語?

    以下命令將英文句子“This is an example text for Riva text translation”(這是 Riva 文本翻譯的示例文本)翻譯成德語,即“Dies ist ein Beispieltext für Riva Textübersetzung”。

    python python-clients/scripts/nmt/nmt.py \
        --server grpc.nvcf.nvidia.com:443 --use-ssl \
        --metadata function-id "647147c1-9c23-496c-8304-2e29e7574510" \
        --metadata "authorization" "Bearer
    $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC" \
        --text "This is an example text for Riva text translation" \
        --source-language-code en \
        --target-language-code de

    生成合成語音?

    以下命令可將文本“This audio is generated from NVIDIA 的文本轉語音模型”轉換為語音,并將音頻輸出另存為 audio.wav。如果您在遠程系統的終端上工作,且音頻輸出無法輕松路由到本地麥克風,此命令尤為有用。

    python python-clients/scripts/tts/talk.py \
        --server grpc.nvcf.nvidia.com:443 --use-ssl \
        --metadata function-id "0149dedb-2be8-4195-b9a0-e57e0e14f972"  \
        --metadata authorization "Bearer
    $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC" \
        --text "this audio is generated from nvidia's text-to-speech model" \
        --voice "English-US.Female-1" \
        --output audio.wav

    使用 Docker 在本地運行語音 NIM?

    如果您可以使用 高級 NVIDIA 數據中心 GPU ,則可以按照 ASR NMT TTS NIM 登陸頁面的 Docker 選項卡下提供的說明在本地運行語音 NIM 微服務。或者,您可以參閱 ASR、NMT 和 TTS 的更詳細入門文檔,其中解釋了每個 docker run 參數并指導您完成設置流程。

    從 NVIDIA 容器注冊表 (nvcr.io) 拉取 NIM 微服務并在您自己的系統上運行這些服務需要 NGC API 密鑰。您在上一節中生成的 NVIDIA API 密鑰應該可以用于此目的。或者,導航至 ASR NMT TTS NIM 登陸頁面,選擇 Docker 選項卡,然后單擊獲取 API 密鑰。

    將語音 NIM 微服務與 RAG 管道集成

    本節介紹如何在您的系統上啟動 ASR 和 TTS NIM 微服務,并將其連接到 NVIDIA 生成式 AI 示例 GitHub 庫中的 基本檢索增強生成 (RAG) 工作流 。通過此設置,您可以將文檔上傳至知識庫,口頭提出相關問題,并以合成的自然聲音獲取答案。

    設置環境?

    啟動 NIM 微服務之前,請直接在終端或通過環境源文件,以 NGC_API_KEY 格式將 NGC API 密鑰導出到系統。

    接下來,登錄 NVIDIA Docker 容器注冊表:

    echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken'
    --password-stdin

    然后,創建一個 LOCAL_NIM_CACHE 目錄:

    export LOCAL_NIM_CACHE=<path/to/nim_cache>
    mkdir -p "$LOCAL_NIM_CACHE"
    chmod 777 $LOCAL_NIM_CACHE

    您將模型存儲在此目錄中,并將其安裝到 NIM 容器中。請確保不要跳過 chmod 777 命令。否則,NIM Docker 容器將無權將模型文件下載到 LOCAL_NIM_CACHE 目錄中。

    默認情況下,語音 NIM 微服務會將模型文件下載到只能在正在運行的容器內訪問的位置。如果您打算一次僅運行其中一個 Riva 服務,您應該要么不指定 LOCAL_NIM_CACHE,要么在停止一個 NIM 容器并啟動另一個容器之前清除 LOCAL_NIM_CACHE 目錄,要么為每個語音 NIM 指定不同的 LOCAL_NIM_CACHE 目錄。這里,相同的 LOCAL_NIM_CACHE 用于 ASR 和 TTS,以便同時運行這兩種服務。

    啟動 ASR NIM?

    使用以下腳本啟動 ASR NIM:

    export CONTAINER_NAME=parakeet-ctc-1.1b-asr
     
    docker run -it --rm --name=$CONTAINER_NAME \
      --runtime=nvidia \
      --gpus '"device=0"' \
      --shm-size=8GB \
      -e NGC_API_KEY=$NGC_API_KEY \
      -e NIM_MANIFEST_PROFILE=9136dd64-4777-11ef-9f27-37cfd56fa6ee \
      -e NIM_HTTP_API_PORT=9000 \
      -e NIM_GRPC_API_PORT=50051 \
      -p 9000:9000 \
      -p 50051:50051 \
      -v "$LOCAL_NIM_CACHE:/home/nvs/.cache/nim" \
      nvcr.io/nim/nvidia/parakeet-ctc-1.1b-asr:1.0.0

    如果 LOCAL_NIM_CACHE 目錄為空(例如第一次執行此命令),可能需要 20-30 分鐘才能完成。在此期間,NIM 將下載聲學(離線、針對延遲優化的流式傳輸和針對吞吐量優化的流式傳輸)和標點模型作為 .tar.gz 文件,然后在容器內解壓縮。

    您可能需要根據 GPU 類型更改 NIM_MANIFEST_PROFILE 參數。默認情況下,NIM 容器會下載 ONNX 格式的模型文件,這些文件可在任何足夠高級的 NVIDIA GPU 上運行。然而,如果您在啟動 ASR 或 TTS NIM 時適當更改此參數,則會改為下載已針對 NVIDIA H100、A100 或 L40 GPU 優化的 NVIDIA TensorRT 格式的模型文件。這樣一來,可在其中一個受支持的 GPU 上加快推理速度。我們即將推出針對其他 GPU 類型的優化 NIM 支持。

    表 1 顯示了 Parakeet CTC Riva 1.1B En-US 模型的 ASR NIM 支持的 NIM_MANIFEST_PROFILE 值:

    GPU NIM_MANIFEST_Profile
    通用 9136dd64-4777-11ef-9f27-37cfd56fa6ee
    NVIDIA H100 7f0287aa-35d0-11ef-9bba-57fc54315ba3
    NVIDIA A100 32397eba-43f4-11ef-b63c-1b565d7d9a02
    NVIDIA L40 40d7e326-43f4-11ef-87a2-239b5c506ca7
    表 1. Parakeet CTC Riva 1.1B En-US 模型的 ASR NIM 支持的 NIM_MANIFEST_PROFILE

    您還可以在 ASR NIM 文檔的“入門”頁面的“ 受支持的模型 ”部分中找到此表格。請注意,模型名稱與容器名稱略有不同。與其他 NIM 微服務不同,語音和翻譯 NIM 微服務不支持 list-model-profiles 實用程序,這意味著您無法通過 docker CLI 訪問有效的 NIM_MANIFEST_PROFILE 值列表。

    啟動 TTS NIM?

    在同一終端使用 Ctrl+C 或在不同終端使用 docker stopdocker container stop 停止 ASR NIM 后,啟動 TTS NIM:

    export CONTAINER_NAME=fastpitch-hifigan-tts
     
    docker run -it --rm --name=$CONTAINER_NAME \
      --runtime=nvidia \
      --gpus '"device=0"' \
      --shm-size=8GB \
      -e NGC_API_KEY=$NGC_API_KEY \
      -e NIM_MANIFEST_PROFILE=3c8ee3ee-477f-11ef-aa12-1b4e6406fad5 \
      -e NIM_HTTP_API_PORT=9000 \
      -e NIM_GRPC_API_PORT=50051 \
      -p 9000:9000 \
      -p 50051:50051 \
      -v "$LOCAL_NIM_CACHE:/home/nvs/.cache/nim" \
      nvcr.io/nim/nvidia/fastpitch-hifigan-tts:1.0.0

    從表 2 中,為 FastPitch HifiGAN Riva En-US 模型選擇合適的 NIM_MANIFEST_PROFILE 值:

    GPU NIM_MANIFEST_Profile
    通用 3c8ee3ee-477f-11ef-aa12-1b4e6406fad5
    NVIDIA H100 bbce2a3a-4337-11ef-84fe-e7f5af9cc9af
    NVIDIA A100 5ae1da8e-43f3-11ef-9505-e752a24fdc67
    NVIDIA L40 713858f8-43f3-11ef-86ee-4f6374fce1aa
    表 2. FastPitch HifiGAN Riva En-US 模型中 TTS NIM 支持的 NIM_MANIFEST_PROFILE 值

    您還可以在 TTS NIM 文檔的“入門”頁面的“ 受支持的模型 ”部分中找到此表。請注意模型名稱與容器名稱之間的細微差別。

    啟動 TTS NIM 的速度應該比啟動 ASR NIM 快得多,因為組成模型占用的空間總計少得多。然而,由于我們對 ASR 和 TTS NIM 使用相同的 LOCAL_NIM_CACHE 目錄,TTS NIM 將同時啟動 ASR 和 TTS 模型。

    將語音 NIM 微服務連接到 RAG 管道

    RAG Web 應用是 NVIDIA 生成式 AI 示例 GitHub 庫的一部分。克隆庫后,您主要需要編輯 RAG/examples/basic_rag/langchain/docker-compose.yaml 。將 rag-playground 服務的 PLAYGROUND_MODE 設置為 speech,并向該服務添加以下 environment 變量:

    services:
      ...
      rag-playground:
        ...
        environment:
          ...
          RIVA_API_URI: <riva-ip-address>:50051
          TTS_SAMPLE_RATE: 48000

    如果您想在 docker-compose 文件 (如下所示格式) 中設置 RIVA_API_URI 并使用可覆蓋的默認值,請勿在默認值周圍加上引號。如果您這樣做,Python os 模塊將在定義 Riva URI 的字符串中包含這些引號,這將引起問題。

    RIVA_API_URI: ${RIVA_API_URI:-<riva-ip-address>:50051}

    即使您在同一臺機器上運行 RAG 示例和語音 NIM 微服務,也需要指定 IP 地址或永久主機名;在此處,localhost 不起作用。

    請參閱生成式 AI 示例庫,詳細了解如何 將 ASR 和 TTS 功能添加到 RAG 工作流

    編輯好 docker-compose 文件后,在同一目錄中運行以下命令以啟動容器網絡。

    docker compose up -d --build

    還要驗證網絡中的每個容器是否正在運行

    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

    測試語音 NIM 和 RAG 集成?

    要測試您的設置,請在瀏覽器中導航至 localhost:8090。如果您在沒有端口轉發的遠程系統上運行 RAG 應用,請改為使用 <remote-IP-address>:8090。借助界面(圖 1 和圖 2),您可以通過文本或語音查詢 大語言模型(LLM),并接收語音回復。如果模型可用,您可以使用菜單選項更改 ASR 和 TTS 語言。

    對于基于文檔的查詢,請單擊頁面右上角附近的“知識庫”選項卡。在此處,您可以上傳 PDF、純文本或 Markdown 文件。這些內容以多維向量形式嵌入,并在向量數據庫中進行索引,因此 LLM 能夠根據這些新信息回答問題。

    例如,上傳 PDF 版本的近期新聞稿“ NVIDIA Blackwell 平臺來助力計算新時代 ”。盡管發布時間已超過五個月,但此示例 Web 應用的默認 LLM 并未對此信息進行預訓練。

    接下來,返回“Converse”選項卡,單擊麥克風按鈕,然后詢問應用程序,“NVIDIA Blackwell GPU 包含多少個晶體管?”如果沒有知識庫,LLM 無法提供正確答案(圖 1)。

    Screenshot showing the testing of the speech NIM and RAG pipeline without an knowledge base.
    圖 1. 在沒有知識庫的情況下測試 NIM 和 RAG 工作流。

    現在,在知識庫處于活動狀態時,再次提出相同的問題。這次,利用完整的 RAG 工作流,LLM 會根據新嵌入的信息正確回答問題(圖 2)。

    Screenshot showing the testing of the speech NIM and RAG pipeline using an active knowledge base.
    圖 2. 使用活躍的知識庫測試 NIM 和 RAG 工作流程

    開始為您的應用添加多語種語音 AI

    在本文中,您已學習設置 NVIDIA 語音和翻譯 NIM 微服務,并使用交互式語音和翻譯模型接口直接通過瀏覽器進行測試。您已深入了解部署 NIM 語音和翻譯微服務的靈活性,并將其集成到 RAG 工作流中,以便通過合成語音應答進行基于文檔的知識檢索。

    準備好將功能強大的多語種語音 AI 添加到您自己的應用了嗎?試用 語音 NIM 微服務 ,輕松地將自動語音識別(ASR)、神經機器翻譯(NMT)和文本到語音(TTS)集成到您的工作流中。探索 API,了解這些 NIM 微服務如何將您的應用轉變為面向全球用戶的可擴展的實時語音服務。

    ?

    ?

    0

    標簽

    人人超碰97caoporen国产