语音

  • 分割
  • 转文字
  • 文字-实际文字配对

text-to-speech (TTS)

VAD-python

需要给定一些超参数,如窗口等

改动该参数,不大行

silero-vad-master

修改代码之后可以得到分离或者合并的声音

  • run silero-vad.ipnb

语音识别

parrots

这个项目看web页面好像不大灵。

Chinese-automatic-speech-recognition

语音匹配

获取的翻译为utf-8编码,获取的gt为gbk编码

读写txt需要进行编码选择

exl表格语音-文本,需要成功匹配。

剧本gt获取

通过splitewps.py,选取”角色:“为关键词。在splitewps.py中运行splite_word(word),注意word(角色名)中的关键词长度不同,不能直接通过[4:]的方式截取台词部分

其中,word为一个包含角色名的list

1
2
# word=["辛倩:","安灵:","纪书兰:"]
# word = ["关菡:"]

将不同角色的台词分离为以角色名命名的txt文件

1
2
3
4
5
### luan.txt
请进。
坐。
你自己看看这个视频。
唐若遥,你是不是觉得自己很了不起?自己给对家送子弹?
  • 最终的输出形式为人名命名的txt文件

image-20230426144125829

语音转文字

所得翻译文本一行对应一个音频,对应音频按照数字递增+wav后缀即可

/data/project/ASR 使用服务器yh下的该项目,之前把识别为空的wav没有加上空行

虽然实际上识别为空行的非常少,但是确实有一两句话是有空行的,主要是行号要和wav文件名对应

导致识别语句和实际音频会有错位

需要重写代码,加入空行语句

语音-文本匹配

  • 在匹配过程中,删除了一些空行。

  • 字典1{“fanyi”,“翻译文件名称.wav”}

  • 判定翻译与gt后,加入索引,索引能够对应同一个gt即可,获得字典2{ “fanyi”:”” , “pipe”: “”},按照“pipei”字段,最后汇总表格。获得gt(文字一行)-fanyi(音频文件名 多个)

  • 字典1,字典2 字段合并

单条文本可以对应多条语音

文本带有标点,但是使用无标点的文本 和 文本转文字 获得的文字进行匹配

只对能匹配的文本进行匹配

最终获得表格-包括语句-对应音频文件名多个

之后进行音频的合并

0 随便找个宾馆吧 随便找个宾馆吧,明天九点接我去公司,下午回家。 0.wav
1 明天九点接我去公司下午回家 随便找个宾馆吧,明天九点接我去公司,下午回家。 1.wav
  • 解决了空识别跳过导致的wav名称和内容不匹配的问题,可能只有一处是空识别
  • 依据标点分割
  • 分为两种情况
  • 是子集,则直接放入语音识别的文本到字典
  • 不是子集,但是有一定的相似度,则放gt文本到字典

语音fake生成

https://github.com/CorentinJ/Real-Time-Voice-Cloning/

  • 中文无法使用,有
  • 使用给定的英文音频可以使用

https://huggingface.co/spaces/Kevin676/ChatGPT-with-Voice-Cloning-for-All

  • 不大行
  • 作者建议使用女声进行voice clone,生成声音完全不像

https://github.com/vincentherrmann/pytorch-wavenet

  • 跑不起来,数据集搞不懂

https://github.com/PaddlePaddle/PaddleSpeech/wiki/PaddleSpeech-CLI-Architecture

paddle应该是可以用的

https://www.bilibili.com/read/cv20153960 MockingBird

实际上是对Real-Time-Voice-Cloning使用了中文的预训练模型并开发了前端。

不大行。封装版本无法进行训练,作者建议使用女声进行测试

弄不好

https://github.com/SayaSS/vits-finetuning

日语vit模型,python讲日语的库无法安装

https://huggingface.co/spaces/innnky/trump/blob/main/app.py

看出使用了transformer模块,可能使用的是vits

trump微调模型,中文也能跑,声音奇奇怪怪的但是还行。

使用英文转trump效果还行,比如使用希拉里转trump

https://github.com/PlayVoice/vits_chinese

中文VITS,还没跑完,数据集搞不懂

https://github.com/Plachtaa/VITS-fast-fine-tuning

在colab上跑,fine tune训练有问题,可能是样本不足的问题。

colab用完了免费算力。

重新测试,使用大约12分钟的训练数据集,大概能看

  • 2023/4/25 感觉TTS(text to speech):200epoch的模型测试还行
  • 可以使用vc(voice clone),但是需要转换前后都有声音模型,即需要已知音频之间的转换
  • 重新使用大约30分钟的音频训练效果还行,有那个味道。

paddlespeech https://aistudio.baidu.com/aistudio/projectdetail/4573549?sUid=2470186&shared=1&ts=1663753541400

https://aistudio.baidu.com/aistudio/projectdetail/6037057

paddle speech 以及对应项目

paddle speech使用一句话生成,使用男声数据可能不大行,使用女声感觉还可以。和预训练数据集有关

https://github.com/jerryuhoo/VTuberTalk

基于paddlespeech的语音合成项目,音频-视频转数据集代码根本跑不起来

https://github.com/svc-develop-team/so-vits-svc

唱歌so-vtis,和vits算法的 不同之处在于so-vits

vits so-vits
用于正常语音合成 singing voice conversion唱歌的
不支持未知语音2语音转换 支持未知语言2现有语音转换

AI部属库

  • Gradio

能够简单实现AI/图像算法部署web,在localhost中部署

  • 就是把前后端的一些通用的东西集成了,只改变算法部分。

  • 只要给出输出输出,数量和给定的算法函数对应就能跑

    基本框架如下:使用前先加载模型,并设置对应函数

1
2
3
4
5
6
7
8
9
10
11
12
app = gr.Blocks()
with app:
with gr.Tabs():
with gr.TabItem("Basic"):
gr.Markdown(value="""""")
vc_input3 = gr.Audio(label="上传音频(长度小于45秒)")
vc_submit = gr.Button("转换", variant="primary")
vc_output1 = gr.Textbox(label="Output Message")
vc_output2 = gr.Audio(label="Output Audio")
vc_submit.click(vc_fn, [ vc_input3], [vc_output1, vc_output2])

app.launch()