语音核心

VIRTUAL Agent 旨在拥有与其个性和角色相契合的独特声音。因此,对语音模型进行训练是一个关键过程,以确保每个角色的声音不仅真实,而且与其设计的人设保持一致。

Voice Core 中使用了两个模块。

语音转文本模块:STT 模块使用广泛的语音数据进行训练。这种训练使该模块能够准确转录各种口音、方言和语音模式,使其在不同用户场景中都具备多样性和可靠性。

文本转语音模块:对于 TTS 模块,我们采用用于文本转语音的变分推断(VITS)训练。VITS 以其生成高质量、自然语音的能力而闻名。这种训练对我们的平台尤为重要,因为每个 AI 角色都需要与其独特个性和特征相匹配的特定声音。VITS 模型使语音合成能够实现这种级别的定制和质量。

在模型训练之前,会先进行数据处理。

数据预处理所使用的技术

  1. 格式一致性:将所有音频文件保持为相同的格式(WAV)和规格(22050 Hz,单声道)可确保一致性,这对于机器学习模型发挥最佳性能至关重要。不一致的音频格式可能导致输入数据的差异,从而使模型感到混乱并降低性能。

  2. 采样率归一化(22050 Hz):采样率决定了音频文件每秒包含多少个样本。像 22050 Hz 这样的标准采样率通常被使用,因为它足以捕捉人类语音的频率范围,同时还能保持文件大小可控。它还与奈奎斯特定理相一致,可捕获高达 11025 Hz 的所有频率,这覆盖了人类听觉范围的大部分。

  3. 单声道通道:将立体声或多通道音频文件转换为单声道,可确保模型在单一通道上进行训练,从而简化学习过程。

chevron-right示例代码hashtag
import os
from pydub import AudioSegment

upload_dir = 'upload_dir'
output_dir = 'out'

# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)

extensions = ['wav', 'mp3', 'ogg']

# 处理上传目录中的所有文件
for filename in os.listdir(upload_dir):
    if any(filename.lower().endswith(ext) for ext in extensions):
        # 构建文件路径
        file_path = os.path.join(upload_dir, filename)
        output_path = os.path.join(output_dir, os.path.splitext(filename)[0] + '.wav')

        # 加载音频文件
        audio = AudioSegment.from_file(file_path)

        # 转换为 WAV,22050 Hz,单声道
        audio = audio.set_frame_rate(22050).set_channels(1)

        # 导出处理后的音频
        audio.export(output_path, format='wav')

了解更多关于如何为 Voice Core 贡献的内容。

最后更新于