431 lines
13 KiB
Markdown
431 lines
13 KiB
Markdown
# 语音识别和合成插件
|
||
|
||
一个功能完整的语音识别和文本转语音合成插件,为EG引擎提供实时语音处理功能,支持多种语言、语音和音频效果处理。
|
||
|
||
## 功能特性
|
||
|
||
### 核心功能
|
||
- **语音识别**: 实时语音转文本功能
|
||
- **文本转语音**: 高质量文本转语音合成
|
||
- **音频处理**: 专业的音频效果处理
|
||
- **多语言支持**: 支持多种语言的识别和合成
|
||
- **多语音支持**: 提供多种语音选择
|
||
- **实时处理**: 低延迟的实时语音处理
|
||
- **音频文件操作**: 支持音频文件的读写和处理
|
||
|
||
### 语音识别功能
|
||
- **实时语音识别**: 持续监听并识别语音
|
||
- **多语言支持**: 支持中文、英文、日文等多种语言
|
||
- **语音活动检测**: 自动检测语音活动开始和结束
|
||
- **静音检测**: 智能识别静音段并分割语音
|
||
- **自定义词汇**: 支持添加专业词汇和术语
|
||
- **识别模式**: 支持命令模式、听写模式和搜索模式
|
||
- **标点符号识别**: 自动添加标点符号
|
||
- **脏话过滤**: 可选的脏话过滤功能
|
||
- **备选结果**: 支持返回多个备选识别结果
|
||
- **单词时间戳**: 提供单词级别的精确时间戳
|
||
- **说话人分离**: 识别不同说话人(需支持)
|
||
- **上下文偏向**: 根据上下文提高识别准确率
|
||
- **增强模型**: 支持使用增强识别模型
|
||
|
||
### 文本转语音功能
|
||
- **高质量合成**: 专业级语音合成质量
|
||
- **多语言支持**: 支持多种语言的语音合成
|
||
- **多语音选择**: 提供多种男声、女声和中性声音
|
||
- **情感语音**: 支持高兴、悲伤、愤怒等情感语音
|
||
- **语音定制**: 可调节语速、音调、音量等参数
|
||
- **SSML支持**: 支持语音合成标记语言
|
||
- **音素支持**: 支持音素级别的精确控制
|
||
- **语音克隆**: 支持基于样本的语音克隆(需支持)
|
||
- **语音混合**: 支持多个语音的混合使用
|
||
- **语音转换**: 支持语音风格转换
|
||
- **神经网络语音**: 支持使用神经网络生成的高质量语音
|
||
- **语音个性**: 支持友好、专业、休闲等语音个性
|
||
- **自定义词典**: 支持添加自定义发音词典
|
||
|
||
### 音频处理功能
|
||
- **音频格式支持**: WAV、MP3等常见音频格式
|
||
- **采样率转换**: 支持不同采样率之间的转换
|
||
- **音频效果**: 20+种专业音频效果
|
||
- 混响(Reverb)
|
||
- 合唱(Chorus)
|
||
- 镶边(Flanger)
|
||
- 失真(Distortion)
|
||
- 压缩器(Compressor)
|
||
- 限制器(Limiter)
|
||
- 扩展器(Expander)
|
||
- 噪声门(Noise Gate)
|
||
- 去齿音器(De-esser)
|
||
- 均衡器(EQ)
|
||
- 颤音(Vibrato)
|
||
- 音高移位(Pitch Shift)
|
||
- 时间拉伸(Time Stretch)
|
||
- **音频分析**: 音频级别检测、静音检测等
|
||
- **音频编辑**: 淡入淡出、音频拼接、分割等
|
||
- **滤波器**: 高通、低通等滤波器
|
||
- **动态处理**: 压缩、限制、扩展等动态范围处理
|
||
|
||
### 性能优化
|
||
- **低延迟处理**: 优化的实时处理算法
|
||
- **内存管理**: 智能的内存使用和垃圾回收
|
||
- **多线程支持**: 支持后台处理,不影响主线程
|
||
- **资源缓存**: 缓存常用资源,提高处理速度
|
||
- **批量处理**: 支持批量音频处理任务
|
||
|
||
## 使用方法
|
||
|
||
### 快捷键操作
|
||
- **F1**: 切换语音识别开关
|
||
- **F2**: 开始/停止语音监听
|
||
- **F3**: 测试文本转语音
|
||
- **F4**: 停止当前语音播放
|
||
- **F5**: 增加语音音量
|
||
- **F6**: 降低语音音量
|
||
- **F7**: 提高语音语速
|
||
- **F8**: 降低语音语速
|
||
- **F9**: 显示语音处理统计信息
|
||
- **F10**: 切换语音情感
|
||
- **F11**: 显示详细统计信息
|
||
- **F12**: 重置语音系统
|
||
|
||
### GUI界面操作
|
||
插件会在屏幕右上角创建控制面板,可以通过按钮直接操作语音识别和合成功能。
|
||
|
||
### 编程接口
|
||
|
||
```python
|
||
# 获取插件实例
|
||
speech_plugin = world.plugin_manager.get_plugin("speech_recognition_synthesis")
|
||
|
||
# 开始语音监听
|
||
speech_plugin.start_listening()
|
||
|
||
# 停止语音监听
|
||
speech_plugin.stop_listening()
|
||
|
||
# 合成语音
|
||
speech_plugin.synthesize_speech("你好,世界!")
|
||
|
||
# 设置语音识别回调
|
||
def on_speech_recognized(text):
|
||
print(f"识别到语音: {text}")
|
||
|
||
speech_plugin.set_speech_recognized_callback(on_speech_recognized)
|
||
|
||
# 设置语音合成回调
|
||
def on_speech_synthesized(audio_data, text):
|
||
print(f"合成语音: {text}")
|
||
|
||
speech_plugin.set_speech_synthesis_callback(on_speech_synthesized)
|
||
|
||
# 设置语言
|
||
speech_plugin.set_language('zh-CN') # 中文
|
||
speech_plugin.set_language('en-US') # 英文
|
||
|
||
# 设置语音
|
||
speech_plugin.set_voice('male1')
|
||
speech_plugin.set_voice('female2')
|
||
|
||
# 设置音量、语速、音调
|
||
speech_plugin.set_volume(0.8) # 80%音量
|
||
speech_plugin.set_speed(1.2) # 1.2倍语速
|
||
speech_plugin.set_pitch(1.1) # 1.1倍音调
|
||
|
||
# 获取支持的语言和语音
|
||
languages = speech_plugin.get_available_languages()
|
||
voices = speech_plugin.get_available_voices()
|
||
|
||
# 检查语音状态
|
||
is_speaking = speech_plugin.is_speaking()
|
||
is_listening = speech_plugin.is_listening
|
||
|
||
# 停止语音播放
|
||
speech_plugin.stop_speaking()
|
||
|
||
# 获取统计信息
|
||
stats = speech_plugin.get_stats()
|
||
```
|
||
|
||
## 核心组件
|
||
|
||
### 语音管理器 (SpeechManager)
|
||
负责管理语音识别和合成的核心功能,包括音频设备管理、音频数据处理等。
|
||
|
||
主要功能:
|
||
- 音频设备管理
|
||
- 音频数据缓冲和处理
|
||
- 录音和播放控制
|
||
- 音频预处理和后处理
|
||
- 音频级别检测和静音检测
|
||
|
||
### 语音识别器 (SpeechRecognizer)
|
||
负责将语音转换为文本,支持多种语言和识别引擎。
|
||
|
||
主要功能:
|
||
- 实时语音监听
|
||
- 语音活动检测
|
||
- 语音识别处理
|
||
- 静音段检测和分割
|
||
- 多语言支持
|
||
- 自定义词汇管理
|
||
|
||
### 语音合成器 (SpeechSynthesizer)
|
||
负责将文本转换为语音,支持多种语音和语言。
|
||
|
||
主要功能:
|
||
- 文本到语音合成
|
||
- 多语音支持
|
||
- 参数调节(语速、音调、音量)
|
||
- 音频效果处理
|
||
- SSML标记支持
|
||
- 音频播放控制
|
||
|
||
### 音频工具类 (AudioUtils)
|
||
提供音频处理和文件操作功能。
|
||
|
||
主要功能:
|
||
- 音频文件读写(WAV格式)
|
||
- 音频格式转换
|
||
- 采样率转换
|
||
- 音频效果处理
|
||
- 音频分析和编辑
|
||
- 音频信息获取
|
||
|
||
## 支持的语言
|
||
|
||
### 语音识别支持的语言
|
||
- 简体中文 (zh-CN)
|
||
- 繁体中文 (zh-TW)
|
||
- 英语(美国) (en-US)
|
||
- 英语(英国) (en-GB)
|
||
- 日语 (ja-JP)
|
||
- 韩语 (ko-KR)
|
||
- 法语 (fr-FR)
|
||
- 德语 (de-DE)
|
||
- 西班牙语 (es-ES)
|
||
- 俄语 (ru-RU)
|
||
|
||
### 语音合成支持的语言
|
||
- 简体中文 (zh-CN)
|
||
- 繁体中文 (zh-TW)
|
||
- 英语(美国) (en-US)
|
||
- 英语(英国) (en-GB)
|
||
- 日语 (ja-JP)
|
||
- 韩语 (ko-KR)
|
||
- 法语 (fr-FR)
|
||
- 德语 (de-DE)
|
||
- 西班牙语 (es-ES)
|
||
- 俄语 (ru-RU)
|
||
|
||
## 支持的语音
|
||
|
||
### 男声
|
||
- male1: 标准男声
|
||
- male2: 低沉男声
|
||
- male3: 明亮男声
|
||
|
||
### 女声
|
||
- female1: 标准女声
|
||
- female2: 温柔女声
|
||
- female3: 明亮女声
|
||
|
||
### 中性声音
|
||
- neutral1: 中性声音
|
||
- neutral2: 机器人声音
|
||
|
||
### 情感语音
|
||
- happy: 高兴
|
||
- sad: 悲伤
|
||
- angry: 愤怒
|
||
- excited: 兴奋
|
||
|
||
## 音频效果
|
||
|
||
插件提供丰富的音频效果处理功能:
|
||
|
||
### 时间域效果
|
||
- **混响 (Reverb)**: 模拟不同空间环境的混响效果
|
||
- **合唱 (Chorus)**: 增加声音的厚度和立体感
|
||
- **镶边 (Flanger)**: 创建独特的扫频效果
|
||
- **颤音 (Vibrato)**: 音高周期性变化效果
|
||
- **失真 (Distortion)**: 添加过载和失真效果
|
||
|
||
### 动态范围处理
|
||
- **压缩器 (Compressor)**: 控制音频动态范围
|
||
- **限制器 (Limiter)**: 防止音频削波
|
||
- **扩展器 (Expander)**: 扩展动态范围
|
||
- **噪声门 (Noise Gate)**: 过滤背景噪声
|
||
- **去齿音器 (De-esser)**: 减少语音中的刺耳音
|
||
|
||
### 滤波器效果
|
||
- **高通滤波器**: 过滤低频噪声
|
||
- **低通滤波器**: 过滤高频噪声
|
||
- **均衡器**: 多频段频率调节
|
||
|
||
### 音高和时间处理
|
||
- **音高移位**: 改变音频音高而不改变时长
|
||
- **时间拉伸**: 改变音频时长而不改变音高
|
||
|
||
## 性能调优
|
||
|
||
### 实时处理优化
|
||
1. **缓冲区管理**: 使用高效的音频缓冲区管理机制
|
||
2. **多线程处理**: 关键处理任务在后台线程执行
|
||
3. **内存优化**: 智能的内存分配和回收
|
||
4. **算法优化**: 使用优化的数字信号处理算法
|
||
|
||
### 资源管理
|
||
1. **智能预加载**: 根据使用情况预加载语音资源
|
||
2. **动态卸载**: 自动卸载长时间未使用的资源
|
||
3. **缓存机制**: 缓存常用处理结果和音频数据
|
||
|
||
### 质量与性能平衡
|
||
1. **可调节质量**: 支持调节处理质量等级
|
||
2. **自适应处理**: 根据系统负载动态调整处理复杂度
|
||
3. **批量处理**: 支持批量处理任务以提高效率
|
||
|
||
## 扩展开发
|
||
|
||
### 添加新的语言支持
|
||
1. 在语音识别器和合成器中添加新的语言代码
|
||
2. 集成相应的语言识别和合成模型
|
||
3. 更新语言列表和相关配置
|
||
|
||
### 添加新的语音
|
||
1. 在语音合成器中注册新的语音名称
|
||
2. 集成相应的语音合成模型或样本
|
||
3. 实现语音参数配置
|
||
|
||
### 添加新的音频效果
|
||
1. 在音频工具类中实现新的效果算法
|
||
2. 添加效果参数验证和处理
|
||
3. 实现效果的应用接口
|
||
|
||
### 添加新的识别模式
|
||
1. 在语音识别器中实现新的识别模式
|
||
2. 调整语音活动检测参数
|
||
3. 优化特定模式下的处理流程
|
||
|
||
## 故障排除
|
||
|
||
### 语音识别问题
|
||
1. **无法识别语音**: 检查麦克风是否正常工作
|
||
2. **识别准确率低**: 检查语言设置是否正确,添加自定义词汇
|
||
3. **识别延迟高**: 检查系统资源使用情况,降低处理质量设置
|
||
4. **无法开始监听**: 检查插件是否已正确启用
|
||
|
||
### 语音合成问题
|
||
1. **无法播放语音**: 检查扬声器或耳机是否正常工作
|
||
2. **语音质量差**: 检查采样率设置,更新语音合成模型
|
||
3. **合成速度慢**: 检查系统资源使用情况,使用较低质量设置
|
||
4. **没有声音输出**: 检查音量设置,确认音频设备正常
|
||
|
||
### 音频处理问题
|
||
1. **音频效果不明显**: 检查效果参数设置
|
||
2. **音频失真**: 检查增益设置,避免削波
|
||
3. **处理延迟高**: 优化处理算法,使用更高效的数据结构
|
||
4. **内存占用高**: 检查缓冲区大小,及时释放不用资源
|
||
|
||
### 性能问题
|
||
1. **CPU使用率高**: 使用性能分析工具定位瓶颈
|
||
2. **内存泄漏**: 检查资源释放,使用内存分析工具
|
||
3. **响应缓慢**: 优化算法,减少不必要的计算
|
||
|
||
## API参考
|
||
|
||
### Plugin类主要方法
|
||
|
||
#### 初始化和控制
|
||
- `initialize()` - 初始化插件
|
||
- `enable()` - 启用插件
|
||
- `disable()` - 禁用插件
|
||
- `finalize()` - 清理插件资源
|
||
- `update(dt)` - 更新插件状态
|
||
|
||
#### 语音识别控制
|
||
- `start_listening()` - 开始语音监听
|
||
- `stop_listening()` - 停止语音监听
|
||
- `set_language(language)` - 设置识别语言
|
||
- `get_available_languages()` - 获取支持的语言列表
|
||
|
||
#### 语音合成控制
|
||
- `synthesize_speech(text, callback)` - 合成语音
|
||
- `stop_speaking()` - 停止语音播放
|
||
- `set_voice(voice)` - 设置语音
|
||
- `set_volume(volume)` - 设置音量
|
||
- `set_speed(speed)` - 设置语速
|
||
- `set_pitch(pitch)` - 设置音调
|
||
- `get_available_voices()` - 获取支持的语音列表
|
||
- `is_speaking()` - 检查是否正在播放语音
|
||
|
||
#### 回调函数设置
|
||
- `set_speech_recognized_callback(callback)` - 设置识别回调
|
||
- `set_speech_synthesis_callback(callback)` - 设置合成回调
|
||
- `set_error_callback(callback)` - 设置错误回调
|
||
|
||
#### 统计和信息
|
||
- `get_stats()` - 获取插件统计信息
|
||
|
||
### 核心组件类
|
||
|
||
#### SpeechManager
|
||
- `start_recording()` - 开始录音
|
||
- `stop_recording()` - 停止录音
|
||
- `start_playback(audio_data)` - 开始播放
|
||
- `stop_playback()` - 停止播放
|
||
- `set_sample_rate(sample_rate)` - 设置采样率
|
||
- `get_audio_chunk()` - 获取音频数据块
|
||
|
||
#### SpeechRecognizer
|
||
- `start_listening()` - 开始监听
|
||
- `stop_listening()` - 停止监听
|
||
- `set_language(language)` - 设置语言
|
||
- `set_silence_threshold(threshold)` - 设置静音阈值
|
||
- `get_available_languages()` - 获取支持的语言
|
||
|
||
#### SpeechSynthesizer
|
||
- `synthesize(text, callback)` - 合成语音
|
||
- `stop_speaking()` - 停止播放
|
||
- `set_voice(voice)` - 设置语音
|
||
- `set_volume(volume)` - 设置音量
|
||
- `set_speed(speed)` - 设置语速
|
||
- `set_pitch(pitch)` - 设置音调
|
||
- `get_available_voices()` - 获取支持的语音
|
||
|
||
#### AudioUtils
|
||
- `save_wav_file(filename, audio_data, sample_rate)` - 保存WAV文件
|
||
- `load_wav_file(filename)` - 加载WAV文件
|
||
- `apply_reverb(audio_data, room_size, damping, wet_level)` - 应用混响
|
||
- `apply_chorus(audio_data, rate, depth, mix)` - 应用合唱
|
||
- `resample_audio(audio_data, from_rate, to_rate)` - 重采样音频
|
||
- `normalize_audio(audio_data)` - 归一化音频
|
||
|
||
## 音频格式支持
|
||
|
||
支持的音频格式:
|
||
- **WAV**: 未压缩的PCM音频
|
||
- **MP3**: MPEG音频层III(需要额外库支持)
|
||
- **PCM**: 原始脉冲编码调制数据
|
||
|
||
## 系统要求
|
||
|
||
### 硬件要求
|
||
- **处理器**: 双核2.0GHz或更高
|
||
- **内存**: 4GB RAM或更高
|
||
- **音频设备**: 支持录音和播放的音频设备
|
||
- **存储空间**: 100MB可用空间用于安装
|
||
|
||
### 软件要求
|
||
- **操作系统**: Windows 7/8/10, macOS 10.12+, Ubuntu 18.04+
|
||
- **Python**: 3.7或更高版本
|
||
- **依赖库**: numpy, scipy等科学计算库
|
||
|
||
## 版本信息
|
||
|
||
- 版本: 1.0.0
|
||
- 作者: EG Team
|
||
- 发布日期: 2024年
|
||
|
||
## 许可证
|
||
|
||
本插件遵循EG引擎许可证协议。 |