目录
语音对话系统是一种允许用户通过语音与计算机程序进行交流的技术。
系统基本组成部分
麦克风:用于捕捉用户的语音输入。
模数转换器(ADC):将模拟的语音信号转换为数字信号,以便计算机处理。
语音识别引擎:将数字化的语音信号转换为文本或命令。
自然语言处理(NLP)模块:分析文本,理解用户的意图和上下文。
对话管理系统:根据用户的意图和上下文,决定如何响应。
语音合成引擎:将文本转换为语音,以便系统可以“说话”。
扬声器:用于播放系统的语音输出。
用户界面:可以是图形界面或语音界面,用于与用户交互。
后端服务:处理复杂的逻辑和数据库查询,以提供准确的响应。
网络连接:对于需要云服务的系统,网络连接是必要的,以便进行数据传输和远程处理。
在软件方面,一个语音对话系统通常包括:
语音识别软件:负责将用户的语音输入转换为文本。
自然语言理解(NLU):解析用户的意图和提取关键信息。
对话管理器:根据用户的意图和上下文,决定下一步的行动。
语音合成软件:将系统生成的文本转换为语音输出。
对话逻辑:定义系统如何响应不同类型的用户输入。
知识库:存储系统需要的信息,以便提供准确的回答。
用户交互管理:处理用户输入和系统输出的流程。
安全协议:确保用户数据的安全和隐私。
这些组件共同工作,使得用户能够通过语音与系统进行交流,并获得相应的反馈。
核心功能
自动语音识别(ASR):
- 功能:将用户的语音输入转换为文本。这是语音对话系统的第一步,它使得系统能够“理解”用户所说的内容。
- 技术:ASR系统通常使用深度学习算法,如循环神经网络(RNNs)和卷积神经网络(CNNs),以及更先进的变换器(Transformers)模型来识别语音中的单词和短语。
自然语言处理(NLP):
- 功能:分析、理解和生成自然语言。在语音对话系统中,NLP用于理解用户的意图,提取关键信息,并生成合适的响应。
- 技术:NLP涉及多种技术,包括分词、词性标注、句法分析、语义分析等。现代NLP系统,特别是基于大型语言模型(LLM)的系统,能够处理复杂的语言模式和上下文关系。
文本到语音合成(TTS):
- 功能:将文本信息转换为语音输出。这是语音对话系统的最后一步,它使得系统能够以自然听起来的声音“说话”。
- 技术:TTS系统使用复杂的算法来模拟人类的发音,包括音素、韵律和语调。现代的TTS系统,如基于深度学习的端到端模型,能够生成非常自然和流畅的语音。
这三个部分共同构成了语音对话系统的核心,使得用户能够通过自然语言与计算机进行交互。
ASR
采用 FunASR,相比 OpenAI 开源的 Whisper,中文识别效果更好;
https://github.com/modelscope/FunASR/blob/main/README_zh.md
NLP
采用大语言模型(LLM),实现对话功能,对上一步识别出来的文字进行理解,并答复;
https://github.com/ymcui/Chinese-LLaMA-Alpaca-3/blob/main/README.md
TTS
采用ChatTTS,它是专门为对话场景设计的文本转语音模型,支持英文和中文。
https://github.com/panyanyany/Awesome-ChatTTS
在线网站
输入文本,点击中间的 “Generate”,就能得到对应 Audio Seed 下的语音,输出文本中的 [uv_break] 代表停顿词。
除了文字本身和控制符号外,常调整的参数主要是Audio Seed,也就是代码中的随机种子。
不同的Seed对应不同的音色,github整理的一批种子对应的音色:
测试了1000条音色:https://github.com/kangyiwen/TTSlist
离线整合包
B站上离线安装包,实现了音质增强、文件处理、音色固定等功能,同时提供Mac和Windows版本。
1.音质增强
输入文本后勾选音频增强和音频降噪,音频会更加清晰,但因为多了两个算法步骤,所以处理时长会增加。
2.文件处理
勾选了文件处理功能,可以上传一个TXT文本,TXT文本需要按照每句换行的格式,类似视频字幕。
当文本内容很多时, 可以勾选文本切割,默认为五十字符进行切割,最后将音频片段合并为一整段音频。
3. 音色固定
点击随机按钮,找到自己满意的音色后,可以将设置和音色种子保存到配置文件中,方便下次使用。
在‘音色名称’处,填入想要保存的名字,然后右侧点击保存,下次使用时直接选择音色配置。
前端交互实现(Gradio)
Gradio是一个用于快速创建机器学习模型的交互式演示的开源库。它允许开发者通过简单的Python代码快速构建一个用户界面。