Qy TTV

2022-09-30
2025-03-14
进度 100%
存档

来自之前的 U 盘。

TTV

开发手册及日志

概述

Qy的子计划之一,是最先开始的子计划。

目的是生成音频和动作

存在多步输出:口型、波形

特征

  • 通过对人类的发声过程进行重现来生成
  • 具备单独的情感表达
  • 多参数输出
  • 可对中间参数进行修改
  • 跨语言,跨方言合成

想法来源

当前产业

对于当前而言,语音合成产业的主要目的已经从“能够听懂内容”变成了“尽量逼近真人”,所以无论从工业界与还是学术界,对生成的音频的质量的要求都是显著提高的。

在当前的环境而言,工业界更加倾向于已经成熟的拼接式;在学术界,除了拼接式,对于参数式模型的研究也发展的很顺利,在2016年,Google的子公司Deep Mind提出了一个新的模型——WaveNet,开启了深度学习+语音合成的道路。

诞生

我的心路历程其实是兴趣转移的过程:

MMD -> 重音teto -> U家(不算入坑,只是自己搞着玩一玩) -> speech synthesis(拼接式 -> 参数式(wavenet)[<=只是有所了解,并未深入研究] -> 想出新思路)

当时想出了以下几点“优越性”:

  • 从发声的实际过程入手不仅是可行的,而且效果相对于传统方法是比较优异的
  • 以前没几个人走过(19年在Nature上发表的那个研究,主要是拿来帮助残疾人而不是被拿来自娱自乐的,所以那个方案和我的方案相比,在目的及细节上完全不同)
  • 跨语言合成与情感的注入

准备

术语

[涉及的过于广阔,不便继续展开]

可能涉及的背景知识

  • 数学
    • 计算机科学
      • 编程
      • 数据库相关
      • 机器学习及数据挖掘
      • 计算机图形学
    • 高等数学(不了解)
    • 信号与系统
  • 物理(不了解)
    • 声学
    • 光学
  • 解剖学
    • 呼吸系统
    • 头面部
    • 颈部
    • 耳鼻喉
  • 影像医学
  • 心理学(不了解)
    • 认知神经科学
    • 情感表达
  • 乐理(不了解)
  • 发声语音学(不了解)
    • IPA
    • 韵律
  • 工程学/技术
    • 数据采集(DAQ)

正文

研究阶段

大致分成七个阶段:

  • 整体架构与接口的设计
  • 前端模型的实现(将文字等符号予以转化)
  • 呼吸模型的实现
  • 喉部数据的获取及发声模型与呼吸模型的整合
  • 调音机制数据采集(及唇,齿,舌,软腭部位等)及模型的建立与前两个模型的整合
  • 感情模型的导入(新的数据库)
  • 和其他部分的整合

不同模型的安排并不是按照“气流机制 -> 发声 -> 调音” 的机制来进行的,而是按照部位(胸腹腔、咽喉、口鼻、唇)安排的

模型的框架设计

输入

主输入

特征:

  • 以段为单位,而不是句子(因其机制)

  • 并不严格要求时间上的对齐

    “时间上的对齐”的意思是:在第几秒说哪个字,发哪个音

  • 情感的定量输入(PAD model),但情感标注并不是基于时间而是基于事件

    存疑:对于情感模块的界限的定义——每一部分应该承担的作用

例子(仅仅是展示,并不是实际的输入):

voice:
  uuid: d8727c04-7bb4-43af-a842-8d662ac36a76
  speaker:
    name: "Cookie"
    meta:
      param: ["default"]
      gender: "female"
      language: "cms-Hans"
  label:
    text: "各位下午好。"
    ext:
      breath: "quick"
      emotion:
        global: [0.2, 0.02, 0.1]
        local: null
附加输入(实时输入)

每时每刻的输入

单位:帧(60fps/120fps)

例如:外界动作,表情等

该模型存在的合理性:终极目标

输出

  • 音频波形文件(*.wav)(Frq:14400Herz)
  • 器官在每一刻的状态(单位:帧)

中间参数

“中间参数”为模型间传递的数据

单纯的“模型”一词就隐含着以下部分条件:

  • 通用的
  • 可复现

这也就要求这模型的中间参数是可迁移的,或者说是能够转移对象的(比如把郭乐乐在嗯♂啊时声道的动作直接作为另一个模型的输入)。换言之,对模型间的参数的定义及设计,必须要消除,或者说是削减,语料库中的个体差异。

但是,人与人的差异极大(比如说是在对于a的定义etc.),所以:

<1.>设计一个新标准或是新协议,就显得尤为重要。

<2.>我们可以采用多人标注的方法来减小这个影响,产生各个参数的分布,e.g. [... t = 12.52 : "a" = 0.89, "o" = 0.09,"e" = 0.02; ...]

预处理模型

'text -> phone'(MI-T) & 'abstracted emotion label -> PAD parament model'(MI-E)

其中,在相同的时刻,MI-E对MI-T存在影响(因果上的影响)

(生成的音素模型并不是单纯的IPA)

动作生成模型

动作分为两类:可控制和不可控制;其中,可控制分为意识驱动和非意识驱动

Dataset preperation

传感器的设计

该板块主要为未存在的内容

躯干建模相关的传感器

定位点:

  • define TOP-POINT 第七颈椎’C7’
  • ~~define BUTTOM-POINT 尾椎(0.0,0.0,0.0)(**)’’~~
  • define FORWARD-DIRECTION (命门穴(L4-L5) -> 肚脐)

采样点:

[基本 basic points]

  • 肚脐(M)‘Nv’
  • 乳头(L,R)(实际测量时要隔着xx/也就是说最好穿一款xx)(甭管男女,男女一样)‘NpL’,‘LpR’

[边缘]

  • 躯干上边缘
    • 胸骨柄上缘
    • 锁骨外端(L,R)
  • 躯干下边缘
    • 耻骨联合
    • 骨盆边缘
  • 肋骨下缘
    • 肋弓(30,60,90,120;L,R)
    • 剑突(0)

[肋骨]

[胸骨]

[腰腹部]

[脊柱 vertebral column]

  • 颈椎
    • C1
    • C7
  • 胸椎
    • T2
    • T4
    • T6
    • T8
    • T10
    • T12
  • 腰椎
    • L1
    • L2
    • L3
    • L4
    • L5
  • 骶椎(仅仅用作定位,如果能够依靠其他固定点定位,这个可以省去)
    • 骶骨尖
    • 尾骨尖

传感器机理探究:

原理为通过对标识点进行距离的测算,从而可以对躯干进行三维重建。

所以,信息就是可以较为精确地测算距离。

涉及三维重建

喉部成像
唇舌及咽肌成像
情绪捕捉

生理信号

生理信号的测量通常包括皮肤电活动(EDA,也称为皮肤电导),肌电图(EMG),心电图(ECG),血容量脉冲(BVP),脑电图(EEG),呼吸与体温,这些能反映出交感神经和副交感神经系统的调节机制。生理信号主要使用特殊的非侵入性表面电极(用于EDA,EMG,ECG和EEG)、血容量脉冲传感器(BVP)、呼吸带(呼吸)与热传感器(体温)来记录。内分泌与免疫学参数也能被记录下来,但这些测量在某种程度上具有侵入性(例如,血液采样)。

采集

设备
  • 环境:

隔音并且能够吸音

传感器间采集的数据不会因其他传感器产生大的干扰

较为舒适(加一个空调)

  • 生物传感器:

在志愿者的躯干上安装能够被检测出空间坐标的定位传感器 => 对以躯干为主对象的呼吸模型进行建模

通气量检测 => 与上个传感器共同进行呼吸模型的建模

  • 麦克风:

电容麦(能够)

安排

录音阶段(除阶段1,2,暂定各5个小时):

  1. [允许情感注入] 呼吸,佩带除了麦克风外的所有传感器
  2. [无感情的]-[无韵律的] IPA发音
  3. [无感情的]-[有韵律的] 念该语言的句子
  4. [小学生念课文的那种感情]-[有韵律的] 念课文
  5. [允许情感注入] 情景对话
  6. [允许情感注入] 意识流内容输出

**注:“允许情感注入”是允许志愿者自由的表达感情;而“有感情的 ”,及“小学生念课文的那种感情 ”的情感表达为受控的*

内容:

多次录音(阶段2,3,4):

  • 正常
  • 耳语
  • 闭气,只动口型

后期标注(阶段2,3,4,5,6):

voice: &demo
  meta:
    stage: 0 # Int, 1~6
    id: null # UUID
    time:  # begin and end, Timestamp
      begin: 2023-04-17T15:02:31+08:00
      end: 2023-04-17T15:02:39+08:00
    speaker:
      id: 0 # Hex
      sexaul: null # String, "M" or "F"
      age: 0 # Int
  body:  # ALL child node use link
    lable: null
#      wav:
#      act:
#      air:
    ext:
      emt: null # Emotion
#        gsr:
#        femg:  # Facial EMG
#        pl:  # Heartbeat
      lgt: null # Language
#        phoneme:
#        word:
#        sentence:

# Stage I:

voice:
  <<: *demo
  meta:
    stage: 1
    id: 152bab47-f462-4326-ab6f-3450160983e1
    time:
      begin: 2023-04-15T19:06:10+08:00
      end: 2023-04-15T19:08:30+08:00
    speaker:
      id: 0x0e5a
      sexaul: "F"
      age: 19
  body:
    lable:
      wav: "/wave/152bab47-f462-4326-ab6f-3450160983e1.wav"
      act: "/br/act/152bab47-f462-4326-ab6f-3450160983e1/"
      air: "/br/ar/152bab47-f462-4326-ab6f-3450160983e1.edf"
    ext:
      emt:
        gsr: "/emt/sc/152bab47-f462-4326-ab6f-3450160983e1.edf"
        femg: "/emt/fcm/152bab47-f462-4326-ab6f-3450160983e1/"
        pl: "/emt/pl/152bab47-f462-4326-ab6f-3450160983e1.edf"

# Stage II:

voice:
  <<: *demo
meta:
  stage: 2
  id: b81a189c-f4a0-476e-90f8-7f3811396f30
  time:
    begin: 2023-05-07T09:45:23+08:00
    end: 2023-05-07T09:57:05+08:00
  speaker:
    id: 0x0e5a
    sexaul: "F"
    age: 19
body:
  lable:
    wav: "/wave/b81a189c-f4a0-476e-90f8-7f3811396f30.wav"
    act: "/br/act/b81a189c-f4a0-476e-90f8-7f3811396f30/"
    air: "/br/ar/b81a189c-f4a0-476e-90f8-7f3811396f30.edf"
  ext:
    lgt:
      phoneme: "/lgn/pht/b81a189c-f4a0-476e-90f8-7f3811396f30"

# Stage III:

voice:
  <<: *demo
  meta:
    stage: 3
    id: a7cbee8e-07ad-4ce7-a915-58aa6f256fde
    time:
      begin: 2023-04-17T09:45:56+08:00
      end: 2023-04-17T09:57:00+08:00
    speaker:
      id: 0x0e5a
      sexaul: "F"
      age: 19
  body:
    ...

情感(PAD模型)

拼音

汉字,句子成分

数据处理(DAQ)

实时的采集会产生大量的数据,如何同步(时间上的)

最好用开源的,其次是应用广泛的商业产品

数据库

  • 本地:PostgreSQL/MongoDB
  • 服务器:PostgreSQL

硬件

本地开发+租用

模型的实现

暂定Python3+第三方库(PyTorch/…)

与其他模型的协同

本计划的终极目的之一就是实现对于人物整体的动作的展现(也就是动画制作方面),所以,与其他模型的协同就显得尤为重要。

该模型所涉及的部位:头颈部、躯干(主要体现在胸腹部的隆起),其中头颈部主要包括:表情,下颌及喉部移动。

参与

人士:

略 相关项目:

开发日志

参见以下目录:

  • 2017~2018 项目雏形开始产生
  • 2019-07-04 项目落户
  • 2019-07-27 进一步填充
  • 2019-07-30 找到前期资料
  • 2019-11-06 暂时搁置
  • 2019-11-13 填充文件及修改错误
  • 2021-02-12 无限期中止此计划,将资源侧重于protoQy
  • 2022-11-16 根据技术的更新修改了部分内容
——完——