【語音合成技術 - MeloTTS】如何建置API服務?

更新於 發佈於 閱讀時間約 6 分鐘

我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」分享了語音合成技術, 該套GPT-SoVITS也非常的出色, 但效能有點不是非常理想, 加上需要GPU才能達到較佳的體驗, 如此一來成本就會有點高了, 因此我們找了另外一套MeloTTS, 這一套強調CPU推理非常的快!

raw-image


衝著這點我們決定來試試看, 因此決定依照官方的安裝指示來玩看看:

git clone <https://github.com/myshell-ai/MeloTTS.git>
cd MeloTTS
pip install -e .
python -m unidic download


奇怪了, 過程怎麼裝不成功呢? 出現這樣的訊息:

raw-image


因此我們決定裝裝boto3來讓下載順利完成:

pip install boto3


當然我們也可以寫在 requirements.txt 裡面再重新安裝一次, 🤷‍♂️ 都可以, 取決於您的習慣。


當然這次就順利安裝完成囉! 接著我們看到官方的文件有展示Python的API使用方式:

raw-image


可是我們希望架設一隻API是未來可以發展UI的接口, 這可以怎麼辦呢? 我們可以使用python的fastAPI來完成, 那麼需要安裝的套件如下:


requirements.txt

fastapi
uvicorn
numpy


接著重新安裝一次, 該有的套件就有了, 我們就可以開始準備動手撰寫API的程式碼囉! 這邊廢話不多說, 直接上Code, 如果對於Code的部份有需要理解的話, 也歡迎使用ChatGPT、Gemini、cursor…等工具來輔助我們, 讓事情更加事半功倍。

from melo.api import TTS
from fastapi import FastAPI, HTTPException
from fastapi.responses import Response
from fastapi.middleware.cors import CORSMiddleware
import numpy as np
import io
import wave
import torch

app = FastAPI()

# 設置CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

# 初始化TTS模型
speed = 1.0
device = 'cpu' # or cuda:0 if you have GPU
model = TTS(language='ZH', device=device)
speaker_ids = model.hps.data.spk2id

def numpy_to_wav_bytes(audio_data: np.ndarray, sample_rate: int) -> bytes:
"""將numpy數組轉換為WAV格式的字節數據"""
buffer = io.BytesIO()
with wave.open(buffer, 'wb') as wav_file:
wav_file.setnchannels(1) # 單聲道
wav_file.setsampwidth(2) # 16位
wav_file.setframerate(sample_rate)
# 確保數據在正確的範圍內並轉換為16位整數
audio_int16 = (audio_data * 32767).astype(np.int16)
wav_file.writeframes(audio_int16.tobytes())
return buffer.getvalue()

@app.get("/tts")
async def text_to_speech(text: str):
try:
# model.tts_to_file 改為 model.tts,直接獲取音頻數據
audio_data = model.tts_to_file(text, speaker_ids['ZH'], speed=speed)

# 使用 numpy_to_wav_bytes 函數將音頻數據轉換為 WAV 格式
wav_bytes = numpy_to_wav_bytes(audio_data, sample_rate=model.hps.data.sampling_rate)

return Response(wav_bytes, media_type="audio/wav")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))

if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=9881)


API寫好之後, 我們就準備啟用它。

python tts_api.py


使用API推理試試看!

http://localhost:9881/tts?text=在遙遠的山谷中清澈的溪水流淌樹影搖曳鳥兒自由地飛翔帶來了春天


結語

TTS如雨後春筍般的出現,我們要學會如何從中挑出我們真正需要的那一個系統與模型, 而這邊僅是分享一些在實際安裝或者使用這的問題, 如果對於一系列文章有興趣的朋友也歡迎下方留言, 浪我們更完整的去認識這些TTS的技術。

avatar-img
125會員
274內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言
avatar-img
留言分享你的想法!

































































阿Han的沙龍 的其他內容
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
精彩回顧 【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務 【語音合成技術 - GPT-SoVITS】如何架設API伺服器 以上是我們過往分享過關於 https://github.com/RVC-Boss/GPT-SoVITS 的分享文章, 這次我們要來試試fine
建議閱讀 在開始之前, 建議您先閱讀以下篇章, 相信當您開始大量使用Airflow作業時, 難免會需要儲存空間的方案, 像是今天的主角minio就是其中之一, 而我們會建議您先閱讀相關篇章也是有道理的, 因為我們推薦的方法是盡量以容器化為導向來進行Airflow自動化流程的作業, 避免干擾到主機的
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」介紹過如何透過docker啟動webui版的TTS服務器, 但假設我們想自行開發一個TTS服務, 並整合到系統裡面, 通常會需要一個傳輸介面來溝通, 而API就是最簡易的溝通方式, 正巧 ****GPT-SoVITS **
今天要分享的主題是關於「語音合成技術 - TTS」一款好用的開源軟體, 名為「GPT-SoVITS」, 它具有以下的特點: 零樣本(Zero Shot): 只需要五秒鐘的語音樣本就能即時文字轉語音。 少量樣本(Few Shot): 只要1分鐘樣本就能提高語音相似度及真實感。 跨語言: 日語
當我們架設好Docker環境, 並撰寫一個DAG為Docker Operator的關卡時, 執行後竟然出現以下錯誤: raise AirflowException("Failed to establish connection to any given Docker hosts.") air
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
精彩回顧 【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務 【語音合成技術 - GPT-SoVITS】如何架設API伺服器 以上是我們過往分享過關於 https://github.com/RVC-Boss/GPT-SoVITS 的分享文章, 這次我們要來試試fine
建議閱讀 在開始之前, 建議您先閱讀以下篇章, 相信當您開始大量使用Airflow作業時, 難免會需要儲存空間的方案, 像是今天的主角minio就是其中之一, 而我們會建議您先閱讀相關篇章也是有道理的, 因為我們推薦的方法是盡量以容器化為導向來進行Airflow自動化流程的作業, 避免干擾到主機的
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」介紹過如何透過docker啟動webui版的TTS服務器, 但假設我們想自行開發一個TTS服務, 並整合到系統裡面, 通常會需要一個傳輸介面來溝通, 而API就是最簡易的溝通方式, 正巧 ****GPT-SoVITS **
今天要分享的主題是關於「語音合成技術 - TTS」一款好用的開源軟體, 名為「GPT-SoVITS」, 它具有以下的特點: 零樣本(Zero Shot): 只需要五秒鐘的語音樣本就能即時文字轉語音。 少量樣本(Few Shot): 只要1分鐘樣本就能提高語音相似度及真實感。 跨語言: 日語
當我們架設好Docker環境, 並撰寫一個DAG為Docker Operator的關卡時, 執行後竟然出現以下錯誤: raise AirflowException("Failed to establish connection to any given Docker hosts.") air
你可能也想看
Google News 追蹤
Thumbnail
川普2.0的關稅與貿易政策,表面看似反覆無常,實則圍繞著幾個核心目標:扭轉貿易不公、推動美國再工業化、確保戰略自主,以及貫徹「美國優先」原則。本文深入剖析其背後的一致性邏輯、長期戰略意義,以及對全球產業鏈的影響,並探討不同產業的贏家與輸家。
Thumbnail
今天我要跟大家聊聊 GPT-SoVITS 的用途及其功能。 這個開源的聲音克隆專案,融合了業內頂尖的語音合成工具——GPT (Generative Pre-trained Transformer)模型,和SoVITS(Speech-to-Video Voice Transformation Sys
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
OpenAI近期公開了名為「Voice Engine(語音引擎)」的AI模型,使用者只要輸入文字與15秒的音訊樣本,該模型便會自動生成與原說話者相似的語音訊息。AI擬聲,也就是大家常說的聲音克隆(Voice Cloning),這項技術發展迅速,讓我們可以輕易複製一個人的聲音,產生合成語音
Thumbnail
合成聲音技術的未來充滿希望,也存在挑戰。OpenAI呼籲社會各界一起加強對這一新興技術的認識,並共同探索如何有效地利用這項技術,同時保護公眾免受潛在的負面影響。
Thumbnail
之前有寫過一篇 《AI工具│透過AI整合的語音功能 Murf》,近期使用過之後,隨著ChatGPT與相關AI普及之後,新的自動生成網站與工具變得多元了起來。 大多會使用在影片製作中,若缺少的素材,或是想要呈現事件及詼諧感的時候,會加入片段人聲去做效果。 於是決定,統整一下自己最近常用的4個AI語
Thumbnail
這篇文章整理了多種好用的AI工具,涵蓋了聲音與音樂相關的AI、影音、圖像生成編輯工具和AI搜尋引擎等領域,幫助你節省時間和解放創意與生產力。
Thumbnail
OpenAI推出的Custom GPTs可以讓你自己量身製作符合你自己需求的AI助手,客製化AI工具喂給他不同的資料產生的結果好壞程度也差很多,好的AI工具能夠幫大家更有效率解決很多問題,不過因為製作門檻很低,有非常大量的客製化GPTs已經在OpenAI的ChatGPT上,這篇推薦給大家的是蒐集整理
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
ChatGPT最擅長的就是文本處理,用來翻譯字幕應該也是一片蛋糕吧!但實際操作測試,卻發現沒那麼容易,原因是影片翻譯要考量的因素太多包括: ▪️時間戳記對齊 ▪️適合閱讀且中英文對照文句長度 ▪️貼合講者原意語氣風格 ▪️專業術語與專有名詞 還有GPT一次可以處理的資訊量有限,超過
我測試的文字轉語音工具,我可以導入4000-5000(甚至高達10,000)個單詞來生成我的音頻檔案。 https://www.text-to-speech.online/ https://ttsmaker.com/ 其他工具但對字符數有一些限制: https://ttsfree.
Thumbnail
川普2.0的關稅與貿易政策,表面看似反覆無常,實則圍繞著幾個核心目標:扭轉貿易不公、推動美國再工業化、確保戰略自主,以及貫徹「美國優先」原則。本文深入剖析其背後的一致性邏輯、長期戰略意義,以及對全球產業鏈的影響,並探討不同產業的贏家與輸家。
Thumbnail
今天我要跟大家聊聊 GPT-SoVITS 的用途及其功能。 這個開源的聲音克隆專案,融合了業內頂尖的語音合成工具——GPT (Generative Pre-trained Transformer)模型,和SoVITS(Speech-to-Video Voice Transformation Sys
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
OpenAI近期公開了名為「Voice Engine(語音引擎)」的AI模型,使用者只要輸入文字與15秒的音訊樣本,該模型便會自動生成與原說話者相似的語音訊息。AI擬聲,也就是大家常說的聲音克隆(Voice Cloning),這項技術發展迅速,讓我們可以輕易複製一個人的聲音,產生合成語音
Thumbnail
合成聲音技術的未來充滿希望,也存在挑戰。OpenAI呼籲社會各界一起加強對這一新興技術的認識,並共同探索如何有效地利用這項技術,同時保護公眾免受潛在的負面影響。
Thumbnail
之前有寫過一篇 《AI工具│透過AI整合的語音功能 Murf》,近期使用過之後,隨著ChatGPT與相關AI普及之後,新的自動生成網站與工具變得多元了起來。 大多會使用在影片製作中,若缺少的素材,或是想要呈現事件及詼諧感的時候,會加入片段人聲去做效果。 於是決定,統整一下自己最近常用的4個AI語
Thumbnail
這篇文章整理了多種好用的AI工具,涵蓋了聲音與音樂相關的AI、影音、圖像生成編輯工具和AI搜尋引擎等領域,幫助你節省時間和解放創意與生產力。
Thumbnail
OpenAI推出的Custom GPTs可以讓你自己量身製作符合你自己需求的AI助手,客製化AI工具喂給他不同的資料產生的結果好壞程度也差很多,好的AI工具能夠幫大家更有效率解決很多問題,不過因為製作門檻很低,有非常大量的客製化GPTs已經在OpenAI的ChatGPT上,這篇推薦給大家的是蒐集整理
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
ChatGPT最擅長的就是文本處理,用來翻譯字幕應該也是一片蛋糕吧!但實際操作測試,卻發現沒那麼容易,原因是影片翻譯要考量的因素太多包括: ▪️時間戳記對齊 ▪️適合閱讀且中英文對照文句長度 ▪️貼合講者原意語氣風格 ▪️專業術語與專有名詞 還有GPT一次可以處理的資訊量有限,超過
我測試的文字轉語音工具,我可以導入4000-5000(甚至高達10,000)個單詞來生成我的音頻檔案。 https://www.text-to-speech.online/ https://ttsmaker.com/ 其他工具但對字符數有一些限制: https://ttsfree.