1. 首先,針對(duì)北太天元所使用的 Python,安裝 pyttsx3 文本轉(zhuǎn)語(yǔ)音引擎:
load_plugin("Python");
pipcmd("install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple/");2. 使用如下函數(shù)初始化一個(gè)基于 pyttsx3 的 TTS 引擎并設(shè)置其參數(shù):
function [engine] = textToSpeech_pytts_init()
% 獲取 Python 根對(duì)象用于調(diào)用 Python 函數(shù)等
py = pyroot;
% 導(dǎo)入 pyttsx3 模塊
pyttsx3 = py.pyttsx3;
% 初始化 TTS 引擎
engine = pyttsx3.init();
% 設(shè)置語(yǔ)音屬性 (可選)
voices = engine.getProperty('voices');
% voices 是一個(gè) py.list 對(duì)象
% 目前北太天元無(wú)法直接使用 length 獲取 py.list 的長(zhǎng)度
% 只能暫時(shí)使用 Python 中的 len 來(lái)代替
for i = 1:py.len(voices)
% 同樣, 北太天元中的 frompy 函數(shù)無(wú)法將 py.list 類型的 voices 轉(zhuǎn)化為內(nèi)置的數(shù)組
% 所以只能通過(guò) pygetitem 函數(shù)來(lái)獲取每一個(gè)元素
voice = pygetitem(voices, i-1);
if contains(string(voice.name), 'Chinese') % 查找支持中文的語(yǔ)音
engine.setProperty('voice', voice.id);
break
end
if contains(string(voice.name), 'English') % 查找支持英文的語(yǔ)音
engine.setProperty('voice', voice.id);
break;
end
end
% 設(shè)置語(yǔ)速 (可選)
engine.setProperty('rate', 150); % 默認(rèn)值為 200
% 設(shè)置音量 (可選)
engine.setProperty('volume', 0.8); % 范圍是 0.0 到 1.0
end3. 初始化引擎,并傳給引擎文本,讓引擎朗讀,或者保存音頻:
% 初始化 TTS 引擎 engine = textToSpeech_pytts_init(); % 設(shè)置要說(shuō)的文本 text = "你好,我在北太天元中調(diào)用 Python 文本轉(zhuǎn)語(yǔ)音引擎!"; engine.say(text); % 保存為 WAV 文件 engine.save_to_file(text, "output.wav"); % 運(yùn)行并等待語(yǔ)音完成 engine.runAndWait(); engine.stop()
這樣便可以聽(tīng)見(jiàn)引擎朗讀的聲音,也可以在本地找到保存的 output.wav 文件。
本示例中的 textToSpeech_pytts_init() 函數(shù)參考 大預(yù)言模型(LLM)賦能具身智能中的人機(jī)交互 中 Python 模型集成一節(jié),并將無(wú)法在北太天元中運(yùn)行的部分進(jìn)行了修改。
本示例也參考了 Python使用總結(jié)之Python文本轉(zhuǎn)語(yǔ)音引擎:pyttsx3完全指南 如何使用 pyttsx3 庫(kù)。
