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 end
3. 初始化引擎,并传给引擎文本,让引擎朗读,或者保存音频:
% 初始化 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 库。