1. 首先,针对北太天元所使用的 Python,安装 pyttsx3 文本转语音引擎:
load_plugin("Python");
pipcmd("install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple/");2. 使用如下函数初始化一个基于 pyttsx3 的 TTS 引擎并设置其参数:
function [engine] = textToSpeech_pytts_init()
% 获取 Python 根对象用于调用 Python 函数等
py = pyroot;
% 导入 pyttsx3 模块
pyttsx3 = py.pyttsx3;
% 初始化 TTS 引擎
engine = pyttsx3.init();
% 设置语音属性 (可选)
voices = engine.getProperty('voices');
% voices 是一个 py.list 对象
% 目前北太天元无法直接使用 length 获取 py.list 的长度
% 只能暂时使用 Python 中的 len 来代替
for i = 1:py.len(voices)
% 同样, 北太天元中的 frompy 函数无法将 py.list 类型的 voices 转化为内置的数组
% 所以只能通过 pygetitem 函数来获取每一个元素
voice = pygetitem(voices, i-1);
if contains(string(voice.name), 'Chinese') % 查找支持中文的语音
engine.setProperty('voice', voice.id);
break
end
if contains(string(voice.name), 'English') % 查找支持英文的语音
engine.setProperty('voice', voice.id);
break;
end
end
% 设置语速 (可选)
engine.setProperty('rate', 150); % 默认值为 200
% 设置音量 (可选)
engine.setProperty('volume', 0.8); % 范围是 0.0 到 1.0
end3. 初始化引擎,并传给引擎文本,让引擎朗读,或者保存音频:
% 初始化 TTS 引擎 engine = textToSpeech_pytts_init(); % 设置要说的文本 text = "你好,我在北太天元中调用 Python 文本转语音引擎!"; engine.say(text); % 保存为 WAV 文件 engine.save_to_file(text, "output.wav"); % 运行并等待语音完成 engine.runAndWait(); engine.stop()
这样便可以听见引擎朗读的声音,也可以在本地找到保存的 output.wav 文件。
本示例中的 textToSpeech_pytts_init() 函数参考 大预言模型(LLM)赋能具身智能中的人机交互 中 Python 模型集成一节,并将无法在北太天元中运行的部分进行了修改。
本示例也参考了 Python使用总结之Python文本转语音引擎:pyttsx3完全指南 如何使用 pyttsx3 库。
