Orca
由加拿大温哥华的 Picovoice 制作
Orca 是一个设备端文本到语音引擎,以零延迟产生高质量、逼真的语音。Orca 是:
- 私有;所有语音处理都在本地运行。
- 跨平台
- Linux (x86_64)、macOS (x86_64, arm64)、Windows (x86_64)
- Raspberry Pi (5, 4, 3) 和 NVIDIA Jetson Nano
请注意,Orca 目前处于开发阶段。虽然我们优先考虑稳定性和兼容性,但在我们不断改进和优化引擎以提供最佳用户体验的过程中,Orca 的某些方面可能会发生变化。
目录
概述
文本输入
Orca支持26个小写字母(a-z)和26个大写字母(A-Z)的英语字母,以及常见的标点符号。您可以通过调用您使用的Orca SDK中提供的valid_characters()
方法获取所有受支持的字符列表。对于本列表不支持的字符或单词的重读可以通过自定义发音实现。
自定义发音
Orca通过嵌入在输入文本中的特定语法支持自定义发音。此功能允许用户使用以下格式定义单词的独特发音:{word|pronunciation}
。发音用ARPABET音素表示。以下是一些使用自定义发音的句子示例
- "这是一个 {自定义|K AH S T AH M} 发音"
- "{读|R IY D} 这个音节为 {读|R EH D},请。
- "我 {生活|L IH V} 在 {塞维利亚|S EH V IY Y AH}。我们有很多 {生活|L AY V} 运动! "
声音
Orca可以使用各种声音合成语音,每个声音都由位于lib/common的模型文件表示。要使用特定声音合成语音,请在orca init函数中提供相关的模型文件。以下是当前可用的声音
模型名称 | 采样率(Hz) |
---|---|
orca_params_female.pv | 22050 |
orca_params_male.pv | 22050 |
语音控制
Orca提供了一组参数来控制合成的语音。以下表格列出了可用的参数
参数 | 默认值 | 描述 |
---|---|---|
语音速度 | 1.0 | 生成的语音速度。有效值在[0.7,1.3]之间。 值越高(越低),生成的语音越快(越慢)。 |
音频输出
Orca的合成语音以原始音频数据或WAV文件的形式交付。输出音频将为单声道16位PCM格式,可以直接输入到播放音频系统中。
AccessKey
AccessKey是部署Picovoice SDKs(包括Orca)的认证和授权令牌。使用Picovoice的任何人都需要有效的AccessKey。您必须保密您的AccessKey。即使文本到语音引擎100%离线运行,您仍需要互联网连接以通过Picovoice许可服务器验证您的AccessKey。
AccessKey还验证您的使用是否在账户的限制范围内。在Picovoice控制台注册的每个人都将获得在此处描述的免费层
使用权利。如果您想增加限制,可以购买订阅计划。
演示
Python 演示
要运行 Python 演示,请在控制台运行以下内容
pip3 install pvorcademo
orca_demo --access_key ${ACCESS_KEY} --text ${TEXT} --output_path ${WAV_OUTPUT_PATH}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的密钥,将 ${TEXT}
替换为要合成的文本,将 ${WAV_OUTPUT_PATH}
替换为输出 WAV 文件的路径。
iOS 演示
从 demo/ios 运行以下命令以安装 Orca-iOS CocoaPod
pod install
将 ViewModel.swift 中的 let ACCESS_KEY = "..."
替换为您从 Picovoice 控制台 获得的密钥。
然后,使用 Xcode 打开生成的 OrcaDemo.xcworkspace 并运行应用程序。
有关 iOS 演示的更多信息,请访问 demo/ios。
C 演示
构建演示
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build --target orca_demo
运行演示
./demo/c/build/orca_demo -l ${LIBRARY_PATH} -m ${MODEL_PATH} -a ${ACCESS_KEY} -t ${TEXT} -o ${OUTPUT_PATH}
SDK
Python
安装Python SDK
pip3 install pvorca
创建引擎实例并生成语音
import pvorca
orca = pvorca.create(access_key='${ACCESS_KEY}')
pcm = orca.synthesize('${TEXT}')
将${ACCESS_KEY}
替换为您从Picovoice控制台获取的密钥,将${TEXT}
替换为要合成的文本,包括潜在的自定义发音。
最后,完成时请确保显式释放资源
orca.delete()
有关更多详细信息,请参见Python SDK。
iOS
创建引擎实例并合成
import Orca
let modelPath = Bundle(for: type(of: self)).path(
forResource: "${MODEL_FILE}", // Name of the model file name for Orca
ofType: "pv")!
do {
let orca = try Orca(accessKey: "${ACCESS_KEY}", modelPath: modelPath)
} catch {}
do {
let pcm = try orca.synthesize(text: "${TEXT}")
} catch {}
将${ACCESS_KEY}
替换为您从Picovoice控制台获取的密钥,将${MODEL_FILE}
替换为Orca的模型文件名,将${TEXT}
替换为要合成的文本,包括潜在的自定义发音。
完成后,务必使用orca.delete()
显式释放资源。
C
头文件include/pv_orca.h包含Orca的C SDK的相关信息。
构建一个对象实例
pv_orca_t *handle = NULL;
const char *model_path = "${MODEL_PATH}";
pv_status_t status = pv_orca_init("${ACCESS_KEY}", model_path, &handle);
if (status != PV_STATUS_SUCCESS) {
// error handling logic
}
将${ACCESS_KEY}
替换为从Picovoice控制台获取的AccessKey,将${MODEL_PATH}
替换为位于lib/common中的模型文件路径。
创建一个synthesize_params
对象来控制合成的语音
pv_orca_synthesize_params_t *synthesize_params = NULL;
status = pv_orca_synthesize_params_init(&synthesize_params);
// change the default parameters of synthesize_params as desired
现在,可以使用handle
和synthesize_params
对象来合成语音
int32_t num_samples = 0;
int16_t *synthesized_pcm = NULL;
status = pv_orca_synthesize(
handle,
"${TEXT}",
synthesize_params,
&num_samples,
&synthesized_pcm);
将${TEXT}
替换为要合成的文本,包括潜在的自定义发音。
最后,完成时确保释放所获取的资源
pv_orca_delete_pcm(pcm);
pv_orca_synthesize_params_delete(synthesize_params);
pv_orca_delete(handle);
版本
v0.1.0 - 2024年1月24日
- 测试版发布
常见问题解答
你可以在这里找到常见问题解答 here。