如何呼叫openai的TTS模型

ScopeAstro發表於2024-09-04

這是24年1月份寫的了,呼叫程式碼大機率有變動,僅供參考。

1 什麼是OpenAI的TTS模型

OpenAI的TTS模型是一種文字到語音(Text-to-Speech)模型,它可以將給定的文字轉換為自然語音音訊。TTS代表Text-to-Speech,是一種人工智慧技術,它使計算機能夠模擬自然語言的聲音,從而實現文字的朗讀。

在OpenAI的TTS模型中,使用者可以選擇不同的聲音(Voice)和模型型別(Model),以定製生成語音的效果。聲音可以是男聲或女聲,而模型型別可以選擇不同的版本,如"tts-1"或"tts-1-hd",以滿足不同的需求。

  1. "tts-1":

    • "tts-1"是OpenAI TTS的基本版本。
    • 相對較小的模型,適用於一般的文字到語音轉換任務。
    • 生成的語音質量較好,但可能在某些情況下缺少一些細節。
  2. "tts-1-hd":

    • "tts-1-hd"是"tts-1"的高畫質版本,具有更高的模型容量和更多的引數。
    • 更大的模型容量通常意味著能夠更好地捕捉文字中的複雜結構和音訊細節。
    • 適用於對語音質量有更高要求的場景,如音訊合成、語音應用等。

選擇使用哪個版本通常取決於任務的要求和對語音質量的期望。如果對生成語音的質量要求較高,可能會選擇使用"tts-1-hd",而對於一般應用,"tts-1"也提供了良好的效能。在實際使用中,可以嘗試兩個版本並比較它們在特定任務上的效果。

2 api收費情況

  • $0.015/0.03 per 1,000 input characters,即1000字元0.015美元。

3 如何使用OpenAI的TTS模型

使用OpenAI的TTS模型需要透過API進行呼叫。以下是使用OpenAI的TTS模型的基本步驟:
該庫需要在全域性魔法上網環境下使用,若出現connect error類報錯,就是節點問題

3.1 步驟:

3.1.1 獲取OpenAI API金鑰

在使用TTS模型之前,需要獲得OpenAI的API金鑰。API金鑰是用於身份驗證的關鍵資訊。具體獲取方式請自行查閱。

3.1.2 安裝OpenAI Python庫

使用Python指令碼呼叫OpenAI的API,需要安裝OpenAI的Python庫。可以使用以下命令進行安裝:

pip install openai
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple  # 清華映象安裝,二者任選其一即可。

3.1.3 編寫Python指令碼

編寫Python指令碼,匯入所需的庫(如openaipathlib等),並配置OpenAI的API金鑰。

from pathlib import Path
from openai import OpenAI  # 要求openai庫版本1.0以上

# 配置OpenAI的API金鑰
client = OpenAI(api_key="your_api_key")

# 設定檔案路徑
speech_file_path = Path(__file__).parent / "speech.mp3"  

3.1.4 使用TTS模型生成語音

在指令碼中呼叫OpenAI的TTS模型,指定模型型別、聲音型別和輸入文字,然後將生成的語音儲存到檔案。

# 呼叫OpenAI的TTS模型
response = client.audio.speech.create(
    model="tts-1-hd", # 模型選擇
    voice="echo",  # 不同語音模式選擇
    input="你好,世界!"  # 生成內容選擇
)

# 將生成的語音儲存到檔案
response.stream_to_file(speech_file_path)

3.1.5 不同的語音模式(voice option)

ChatGPT 在OpenAI的TTS-1模型中,Alloy、Echo、Fable、Onyx、Nova和Shimmer代表不同的語音模式或聲音型別。每種語音模式都具有獨特的音質、音調和語音特點。以下是對這六種語音模式的簡要介紹:

  1. Alloy(合金):

    • Alloy 是一種女聲語音模式。
    • 聲音可能具有音樂感,適用於一般性的語音合成任務。
  2. Echo(回聲):

    • Echo 是一種男聲語音模式。
    • 可能具有較深的音調,適用於需要男聲的場景。
  3. Fable(寓言):

    • Fable 是一種語音模式,具有獨特的聲音特點。
    • 可能呈現出富有魅力和講故事感的音質。
  4. Onyx(黑瑪瑙):

    • Onyx 是一種語音模式,可能具有深沉和富有表現力的音質。
    • 適用於需要更加莊重和深情的場景。
  5. Nova(新星):

    • Nova 是一種語音模式,可能呈現出明亮、清晰和生動的音質。
    • 適用於需要更加活潑和清晰的語音的場景。
  6. Shimmer(閃光):

    • Shimmer 是一種語音模式,可能具有更加明亮和閃耀的音質。
    • 適用於需要更加活潑和輕鬆的場景。

3.1.6 配置

3.1.6.1 法一 配置代理後,再開代理軟體

  • _base_client.py ps:這個檔案我忘了在哪了,應該在opneai這個包裡。
    • image.png
proxies = {
    'http://':'http://127.0.0.1:埠',
    'https://': 'http://127.0.0.1:埠'
}

3.1.6.2 法二 開全域性代理(必須是tun模式,i.e 改網路卡的那種)

3.1.7 執行指令碼

執行編寫好的Python指令碼,根據需要提供相應的命令列引數,如API金鑰、模型型別、聲音型別和輸入文字。
也可以在ide中直接執行,不用按照如下方式

python your_script.py --api_key="your_api_key" --model="tts-1-hd" --voice="echo" --input_text="你好,世界!"

3.1.8 完整程式碼

from pathlib import Path
from openai import OpenAI
client = OpenAI(api_key="your_api_key")  # 此處屬於你的api

speech_file_path = Path(__file__).parent / "speech.mp3"  # 設定檔案路徑
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="Today is a wonderful day to build something people love!"
)  # 生成的文字內容,支援中文

response.stream_to_file(speech_file_path)

相關文章