# 语音识别和合成插件

一个功能完整的语音识别和文本转语音合成插件，为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引擎许可证协议。