【🎧 common-voice 語音資料蒐集程式 】架設啟動的一些雷坑 💣

更新於 發佈於 閱讀時間約 9 分鐘
raw-image


Common Voice 是 Mozilla 發起的一個開源專案,目的是建立一個大型、公開、自由可用的語音資料庫,讓任何人(尤其是研究人員、開發者、公司)都可以用來訓練語音辨識、語音合成(TTS)等人工智慧應用。


很幸運的, Common Voice也將原始碼提供給大家使用, 在 🔍 https://github.com/common-voice/common-voice/tree/main 可以找到。


好了, 讓我們進入正題, 在啟動Common Voice的過程中也不是這麼的順利, 因此期望透過我們的分享, 讓需要的朋友可以省去踩坑的過程, 您的訂閱與愛心都是我們分享的動力, 真心期待我們可以一起學習及成長。


🚀 首先讓我們啟動

docker compose up web

一開始啟動會連不到db, 這部份需要等待一段時間後再啟動web, 讓它重新連線。


問題一: 我的權限不夠高嗎?

咦! 啟動時竟然發生這問題…, 難道我沒有權限或權限不夠?

web        | Failed to access /.cache/Cypress:
web |
web | EACCES: permission denied, mkdir '/.cache'


主要是因為我們在docker/Dockerfile有設定權限的參數:

ARG UID=10001
ARG GID=10001


但我們啟動時, 根據文件的建議, 設定為主機的帳號集群組:

web:
build:
context: .
dockerfile: docker/Dockerfile
container_name: web
user: '${UID:-10001}:${GID:-10001}'


這樣一來存取 /.cache 當然會出問題呀, 那怎麼辦呢? 我們可以更改一下位置, 在compose的環境變數這樣做

environment:
- DOTENV_CONFIG_PATH=/code/.env-local-docker
- CYPRESS_CACHE_FOLDER=/code/.cache/Cypress



問題二: 為什麼Cannot read properties of null (reading 'includes')

詳細的錯誤我們貼來這邊一起看看。

web  | [BE] unhandled promise rejection TypeError: Cannot read properties of null (reading 'includes')
web | [BE] at resolveWellKnownUri (/code/node_modules/openid-client/lib/issuer.js:179:23)
web | [BE] at Function.discover (/code/node_modules/openid-client/lib/issuer.js:142:26)
web | [BE] at setupAuthRouter (/code/server/src/auth-router.ts:36:34)
web | [BE] at Server.setupApp (/code/server/src/server.ts:125:36)
web | [BE] at runServer (/code/server/src/main.ts:27:18)
web | [BE] at Object.<anonymous> (/code/server/src/main.ts:34:1)
web | [BE] at Module._compile (node:internal/modules/cjs/loader:1364:14)
web | [BE] at Object.Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
web | [BE] at Module.load (node:internal/modules/cjs/loader:1203:32)
web | [BE] at Function.Module._load (node:internal/modules/cjs/loader:1019:12)
web | [BE] at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
web | [BE] at node:internal/main/run_main_module:28:49

仔細追查後發現到關鍵的 「openid-client」這很有可能跟認證與授權有關, 因此讓我們再詳細的翻閱文件看看究竟有什麼貓膩! 幸好皇天不負苦心人, 讓我們在 https://github.com/common-voice/common-voice/blob/main/docs/DEVELOPMENT.md#authentication 這裡找到了Auth相關的配置。


要怎麼進行這個部份呢?

  1. Create an Auth0 account.
  2. Click "Applications" from the dashboard. Create a new one, or use the default application.
  3. On "Applications" still, next to your application, click the "three dots" icon, then Settings.
  4. Add http://localhost:9000/callback to the "Allowed Callback URLs" list.
  5. Copy the Auth0 application settings into your configuration file. These are found in the same Settings tab as the "Allowed Callback URLs".


我們只要照著上述的步驟就能夠得到我們配置所需的值。


讓我們在 .env-local-docker 配置以下的設定吧!

CV_AUTH0_DOMAIN="<domain_here>"
CV_AUTH0_CLIENT_ID="<client_id_here>"
CV_AUTH0_CLIENT_SECRET="<client_secret_here>"



問題三: 順利啟動了, 但卻一直導到 404 頁面

我們可以看到 http://localhost:9002/en/404 會一直不斷的請求 /translations。

raw-image


這是因為我們的語言缺失, 因此我們需要再刷一次這樣的腳本, 讓語言資訊同步到快取伺服器。

docker exec -it redis redis-cli FLUSHALL


接著我們重新再進入到 http://localhost:9000 就可以看到頁面順利的進入了。

raw-image


結語

以上是我們在架設Common Voice時遇到的一些狀況, 我們希望透過分享, 讓大家都能夠避開這些坑, 也希望這篇文章真的有幫助到遇到困難的你們, 讓我們共同突破難關, 讓軟體品質越來越好。

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
131會員
291內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/06/11
關於Airflow是什麼, 歡迎參考「🔒 阿Han的軟體心法實戰營 - MLOps」, 在開始之前我們也推薦以下兩篇給您閱讀: 【🔒 MLOps - Airflow】使用docker compose架設Airflow 【🔒 MLOps - Airflow】使用DAG流程呼叫Docker O
Thumbnail
2025/06/11
關於Airflow是什麼, 歡迎參考「🔒 阿Han的軟體心法實戰營 - MLOps」, 在開始之前我們也推薦以下兩篇給您閱讀: 【🔒 MLOps - Airflow】使用docker compose架設Airflow 【🔒 MLOps - Airflow】使用DAG流程呼叫Docker O
Thumbnail
2025/05/14
當我們在開發AI應用程式的時候, 常常會使用到onnx, ONNX 是一種開放標準格式,允許不同深度學習框架(如 PyTorch、TensorFlow、Scikit-learn)之間互通,使模型可以在不同平台上運行,而 ONNX Runtime 則是一個高效能的推理引擎,專門用來加速 ONNX
Thumbnail
2025/05/14
當我們在開發AI應用程式的時候, 常常會使用到onnx, ONNX 是一種開放標準格式,允許不同深度學習框架(如 PyTorch、TensorFlow、Scikit-learn)之間互通,使模型可以在不同平台上運行,而 ONNX Runtime 則是一個高效能的推理引擎,專門用來加速 ONNX
Thumbnail
2025/04/30
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」有分享如何使用Docker來架設GPT-SoVITS的TTS API服務, 但過程中我們卻遇到了一些困難, 相信有深入使用這套TTS服務的朋友應該難免也會遇到這類的問題, 期望透過我們的分享幫助到正在遇到困難的你! 首先我
Thumbnail
2025/04/30
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」有分享如何使用Docker來架設GPT-SoVITS的TTS API服務, 但過程中我們卻遇到了一些困難, 相信有深入使用這套TTS服務的朋友應該難免也會遇到這類的問題, 期望透過我們的分享幫助到正在遇到困難的你! 首先我
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
  在 AI 應用中,圖像、語音、文字三種可以說是主要應用,其中我一直以來都是專注於圖像上的研究,對於另兩種僅止於淺嚐,接下來就往音訊上研究看看,先從入門級的Text-To-Speech (TTL) 入場並一個個嘗試其他類型的應用,那麼,就讓我們開始吧。
Thumbnail
  在 AI 應用中,圖像、語音、文字三種可以說是主要應用,其中我一直以來都是專注於圖像上的研究,對於另兩種僅止於淺嚐,接下來就往音訊上研究看看,先從入門級的Text-To-Speech (TTL) 入場並一個個嘗試其他類型的應用,那麼,就讓我們開始吧。
Thumbnail
「人工智障計畫」也執行了好一段時間了,關於這個專案中文字轉語音的方案,在之前的筆記中也有稍微提到,為了達成能自訂聲線,並且能完全離線運作兩個條件,我已經做過了不少嘗試。
Thumbnail
「人工智障計畫」也執行了好一段時間了,關於這個專案中文字轉語音的方案,在之前的筆記中也有稍微提到,為了達成能自訂聲線,並且能完全離線運作兩個條件,我已經做過了不少嘗試。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
這篇文章介紹瞭如何將聲音檔轉換為逐字稿,並且提到了使用雲端硬碟安裝colaboratory的方法。這篇文章指出了逐字稿的重要性,以及如何透過逐字稿做文字呈現方式的轉變。如果你需要處理會議紀錄或聲音檔,這些方法都能幫助你更輕鬆的進行工作。
Thumbnail
這篇文章介紹瞭如何將聲音檔轉換為逐字稿,並且提到了使用雲端硬碟安裝colaboratory的方法。這篇文章指出了逐字稿的重要性,以及如何透過逐字稿做文字呈現方式的轉變。如果你需要處理會議紀錄或聲音檔,這些方法都能幫助你更輕鬆的進行工作。
Thumbnail
文字MP3專業版是簡單且強大的工具,會編輯文字就能創造出專業級配音。簡單 ﹑容易上手,像使用Word,無需剪輯經驗,輕鬆完成調整語速﹑插入空秒﹑插入背景音樂或音效等方面的製作。提供多種語言和配音員選擇,包括純正的臺灣口音。這個工具能應用於各種情境,如教育訓練簡報、有聲書、Podcast等。
Thumbnail
文字MP3專業版是簡單且強大的工具,會編輯文字就能創造出專業級配音。簡單 ﹑容易上手,像使用Word,無需剪輯經驗,輕鬆完成調整語速﹑插入空秒﹑插入背景音樂或音效等方面的製作。提供多種語言和配音員選擇,包括純正的臺灣口音。這個工具能應用於各種情境,如教育訓練簡報、有聲書、Podcast等。
Thumbnail
在簡報設計中,我們有時需要視覺化去表達「語音」的概念,例如是講者介紹、客戶回饋、問答環節等。利用在常見的語音圖案是可行的做法,只是人手自己畫耗費時間,生成式人工智能又未必一下子做到想要的效果。要解決問題,還有第三種可行辦法,免費可商用的字體,同樣可以助你快速建立語音圖案,兼且保留設計的自由度。
Thumbnail
在簡報設計中,我們有時需要視覺化去表達「語音」的概念,例如是講者介紹、客戶回饋、問答環節等。利用在常見的語音圖案是可行的做法,只是人手自己畫耗費時間,生成式人工智能又未必一下子做到想要的效果。要解決問題,還有第三種可行辦法,免費可商用的字體,同樣可以助你快速建立語音圖案,兼且保留設計的自由度。
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News