本文档描述了 GPT Academic 系统内的音频处理能力。它涵盖了从语音到文本(语音输入)和从文本到语音(音频输出)的功能,详细介绍了音频如何被捕获、处理和用于与大型语言模型 (LLM) 进行交互。
GPT Academic 中的音频处理包含两个主要组件:
来源: crazy_functions/live_audio/aliyunASR.py crazy_functions/live_audio/audio_io.py themes/tts.js
语音转文本功能使用阿里云的云端 ASR 服务将语音转换为可由 LLM 处理的文本。
来源: crazy_functions/live_audio/aliyunASR.py crazy_functions/live_audio/audio_io.py
系统使用 WebRTC VAD(语音活动检测)来判断用户何时在说话,这有助于:
来源: crazy_functions/live_audio/aliyunASR.py87-104 crazy_functions/live_audio/audio_io.py
RealtimeAudioDistribution 类使用单例模式管理音频数据流,以确保应用程序中一致的音频处理。
来源: crazy_functions/live_audio/audio_io.py16-41 crazy_functions/live_audio/aliyunASR.py107-136
AliyunASR 类负责连接到阿里云的语音识别服务。
配置需要设置配置文件中的阿里云访问凭证。
ALIYUN_TOKENALIYUN_APPKEYALIYUN_ACCESSKEYALIYUN_SECRET来源: crazy_functions/live_audio/aliyunASR.py107-256
文本转语音功能将 LLM 生成的文本转换为语音,以便在浏览器中播放。
来源: themes/tts.js152-243 themes/tts.js80-78
客户端 JavaScript 实现了一个 AudioPlayer 类,该类:
系统使用以下关键函数处理 TTS 文本:
process_latest_text_output:根据上下文确定如何处理新文本。process_increased_text:处理流式响应中的增量文本更新。push_text_to_audio:将文本发送到 TTS API 以生成音频。UpdatePlayQueue:维护音频播放的正确顺序。系统通过自然断点(句号和换行符)智能地分割文本,以创造自然的语音。
来源: themes/tts.js152-204 themes/tts.js246-272
文本被发送到 /vits 端点进行处理。
来源: themes/tts.js246-272 themes/tts.js308-319
系统处理各种音频格式转换,以确保组件之间的兼容性。
change_sample_rate 函数在不同的采样率之间进行转换(例如,从 48kHz 转换为 16kHz 以用于 ASR)。write_numpy_to_wave 函数将 NumPy 数组转换为 WAV 格式进行处理。来源: crazy_functions/live_audio/audio_io.py43-51 crazy_functions/live_audio/aliyunASR.py6-85
音频处理系统与 LLM 桥接器集成,以实现与各种模型的语音交互。
来源: request_llms/bridge_moonshot.py request_llms/bridge_deepseekcoder.py request_llms/bridge_llama2.py
要使用音频处理功能,需要进行几个配置步骤:
阿里云 API 设置:
客户端配置:
性能考量:
来源: themes/common.py48-76 crazy_functions/live_audio/aliyunASR.py223-256