TUHs commited on
Commit
7627fc7
·
1 Parent(s): 8127559

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +94 -12
app.py CHANGED
@@ -336,7 +336,7 @@ def FRCRN_De_Noise(noise_wav, noisemic_wav):
336
 
337
  ans = pipeline(
338
  Tasks.acoustic_noise_suppression,
339
- model='/home/user/app/damo/speech_frcrn_ans_cirm_16k')
340
 
341
  # 生成文件名
342
  now = datetime.datetime.now()
@@ -346,8 +346,40 @@ def FRCRN_De_Noise(noise_wav, noisemic_wav):
346
 
347
  result = ans(
348
  noise_audio,
349
- output_path= filename + "denoise.wav" )
350
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
  return filename + "denoise.wav"
352
 
353
 
@@ -382,6 +414,19 @@ with app:
382
  btn2.click(train, inp2, out2)
383
  btn3.click(infer, inp3, out3)
384
  btn4.click(save_model, out1, out4) # 保存模型到 trained_model 文件夹
 
 
 
 
 
 
 
 
 
 
 
 
 
385
 
386
  with gr.TabItem("声音合成"):
387
  with gr.Row():
@@ -398,6 +443,16 @@ with app:
398
 
399
  btn21.click(update_model_dropdown, inp21, inp21)
400
  btn22.click(infer_custom, [inp21, inp23, inp22], out21) # 根据选择的模型和输入的文本进行推理
 
 
 
 
 
 
 
 
 
 
401
 
402
  with gr.TabItem("模型修改"):
403
  with gr.Row():
@@ -412,18 +467,42 @@ with app:
412
  btn32 = gr.Button("重命名", variant="primary") # 重命名模型
413
 
414
  btn31.click(update_model_dropdown, inp31, inp31)
415
- btn32.click(rename_model, [inp31, inp32], out31)
 
 
 
 
 
 
 
 
416
 
417
  with gr.TabItem("AI降噪"):
418
  with gr.Row():
419
  with gr.Column():
420
  inp41 = gr.Audio(type="filepath", sources="upload", label="方案一:请从本地上传一段语音")
421
- inp_micro41 = gr.Audio(type="filepath", sources="microphone", label="方案二:请用麦克风录制您的声音")
422
  with gr.Column():
423
- out41 = gr.Audio(type="filepath", label="AI降噪后的音频", interactive=False)
424
- btn41 = gr.Button("一键AI降噪", variant="primary")
 
 
425
 
426
- btn41.click(FRCRN_De_Noise, [inp41, inp_micro41], out41)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
 
428
  with gr.TabItem("缓存清理"): # 创建一个 gr.Blocks() 组件,命名为 "加载和推理"
429
  with gr.Row():
@@ -444,13 +523,15 @@ with app:
444
 
445
 
446
 
447
- with gr.Accordion("📒 使用指南", open=True):
448
  _ = f""" 如何使用此程序:
449
- * 第一步,选择 [方案一] [方案二] 上传一分钟左右的音频,注意要吐字清晰、感情饱满、色纯净不含杂音
450
- * 第二步,点击“标注数据”,等到提示标注功后,选择合适训练步数点击“开始训练”等待训练完成
451
- * 第三步,耐心等待训练成功后,文本框内输入想要生成文字点击“一键生成”按钮,生成克隆的语音
 
 
452
  * !!注意!! 不要生成会对个人以及组织造成侵害的内容
453
- * 如果您需要用方案二录制您的声音,以下是一段长度合适的文本,供您朗读并录制:
454
 
455
  记得春天的时候,小草就转出地面,树上的叶子也抽出来了,大地一片绿色,就像穿上了一件绿衣裳。我就与小孩子一起到田野去捉蜻蜓,玩游戏,比如老鹰合作小鸡或是捉迷藏,又或是跳格子。到了夏天,天气热了,我就会与小孩子到水库里面游泳,那时候水库的安全系数还不是很高,几乎每年都会有事故发生,所以父母都不会让我去游泳的,被发现之后当然就是处罚或是责骂了。可是那时候自己真的很叛逆,也不知道什么是危险,被处罚之后下一次还是回去的。到了秋天,田野一片金黄,山上的野果也成熟了,我就会与自己的伙伴拿着篮子到上山去采,采回来了还要跟自己的好朋友一起分享。
456
 
@@ -466,4 +547,5 @@ with app:
466
  </div>
467
  ''')
468
 
 
469
  app.launch(show_error=True, share=False)
 
336
 
337
  ans = pipeline(
338
  Tasks.acoustic_noise_suppression,
339
+ model='/home/yiho/Personal-TTS-v3/damo/speech_frcrn_ans_cirm_16k')
340
 
341
  # 生成文件名
342
  now = datetime.datetime.now()
 
346
 
347
  result = ans(
348
  noise_audio,
349
+ output_path= filename + "AIdenoise.wav" )
350
 
351
+ return filename + "AIdenoise.wav"
352
+
353
+ #使用傅里叶变换降噪
354
+ def Normal_De_Noise(noise_wav, noisemic_wav, noise_level):
355
+ if noisemic_wav is not None:
356
+ noise_audio = noisemic_wav
357
+ else:
358
+ noise_audio = noise_wav
359
+
360
+ # 生成文件名
361
+ now = datetime.datetime.now()
362
+ date_str = now.strftime("%Y%m%d%H%M%S")
363
+ rand_num = random.randint(1000, 9999)
364
+ filename = date_str + str(rand_num)
365
+
366
+ # 读取音频文件
367
+ y, sr = librosa.load(noise_audio)
368
+ # 计算短时傅里叶变换
369
+ S = librosa.stft(y)
370
+ # 计算噪声的均值和标准差
371
+ noise = S[np.abs(S) < np.percentile(S, 95)]
372
+ noise_mean, noise_std = np.mean(noise), np.std(noise)
373
+ # 创建滤波器
374
+ filter_ = np.ones_like(S)
375
+ filter_[np.abs(S) < noise_mean + noise_level * noise_std] = 0
376
+ # 应用滤波器
377
+ filtered_S = filter_ * S
378
+ # 反转傅里叶变换
379
+ filtered_y = librosa.istft(filtered_S)
380
+ # 保存降噪后的音频文件
381
+ sf.write(filename + "denoise.wav", filtered_y, sr)
382
+
383
  return filename + "denoise.wav"
384
 
385
 
 
414
  btn2.click(train, inp2, out2)
415
  btn3.click(infer, inp3, out3)
416
  btn4.click(save_model, out1, out4) # 保存模型到 trained_model 文件夹
417
+ with gr.Accordion("📒 训练教程", open=True):
418
+ _ = f""" 如何开始训练:
419
+ * 第一步,选择 [方案一] 或 [方案二] 上传一分钟左右的音频,注意要吐字清晰、感情饱满、音色纯净不含杂音
420
+ * 第二步,点击“标注数据”,等到提示标注成功后,选择合适的训练步数,点击“开始训练”等待训练完成
421
+ * 第三步,耐心等待训练成功后,在文本框内输入想要生成的文字,点击“一键生成”按钮,生成克隆后的语音
422
+ * !!注意!! 不要生成会对个人以及组织造成侵害的内容
423
+ * 如果您的训练素材比较嘈杂,您可以在[AI降噪]选项卡上传或录制训练音频,降噪后再上传到训练界面
424
+ * 如果您需要用方案二录制您的声音,以下是一段长度合适的文本,供您朗读并录制:
425
+
426
+ 记得春天的时候,小草就转出地面,树上的叶子也抽出来了,大地一片绿色,就像穿上了一件绿衣裳。我就与小孩子一起到田野去捉蜻蜓,玩游戏,比如老鹰合作小鸡或是捉迷藏,又或是跳格子。到了夏天,天气热了,我就会与小孩子到水库里面游泳,那时候水库的安全系数还不是很高,几乎每年都会有事故发生,所以父母都不会让我去游泳的,被发现之后当然就是处罚或是责骂了。可是那时候自己真的很叛逆,也不知道什么是危险,被处罚之后下一次还是回去的。到了秋天,田野一片金黄,山上的野果也成熟了,我就会与自己的伙伴拿着篮子到上山去采,采回来了还要跟自己的好朋友一起分享。
427
+
428
+ """
429
+ gr.Markdown(dedent(_))
430
 
431
  with gr.TabItem("声音合成"):
432
  with gr.Row():
 
443
 
444
  btn21.click(update_model_dropdown, inp21, inp21)
445
  btn22.click(infer_custom, [inp21, inp23, inp22], out21) # 根据选择的模型和输入的文本进行推理
446
+ with gr.Accordion("📒 推理教程", open=True):
447
+ _ = f""" 如何推理声音:
448
+ * 第一步,选择一个你想要使用的模型,如果训练后保存的模型无法找到请点击“刷新模型列表”
449
+ * 第二步,在文本框处输入你想要生成的文本,选择降噪强度,如果无需降噪请将强度设为0
450
+ * 第三步,点击“一键生成”按钮,生成克隆后的语音
451
+ * !!注意!! 不要生成会对个人以及组织造成侵害的内容
452
+ * 此处使用的降噪算法为机械降噪,非AI降噪,如需AI降噪可以将生成的音频下载后转到“AI降噪”选项卡进行AI降噪
453
+
454
+ """
455
+ gr.Markdown(dedent(_))
456
 
457
  with gr.TabItem("模型修改"):
458
  with gr.Row():
 
467
  btn32 = gr.Button("重命名", variant="primary") # 重命名模型
468
 
469
  btn31.click(update_model_dropdown, inp31, inp31)
470
+ btn32.click(rename_model, [inp31, inp32], out31)
471
+ with gr.Accordion("📒 推理教程", open=True):
472
+ _ = f""" 如何修改模型名称:
473
+ * 第一步,选择一个你想要修改的模型,如果训练后保存的模型无法找到请点击“刷新模型列表”
474
+ * 第二步,在文本框处输入你想要修改的模型名称,推荐以“[训练步数]时间-名称”来命名
475
+ * 第三步,点击“重命名”按钮对模型重命名
476
+
477
+ """
478
+ gr.Markdown(dedent(_))
479
 
480
  with gr.TabItem("AI降噪"):
481
  with gr.Row():
482
  with gr.Column():
483
  inp41 = gr.Audio(type="filepath", sources="upload", label="方案一:请从本地上传一段语音")
484
+ inp_micro42 = gr.Audio(type="filepath", sources="microphone", label="方案二:请用麦克风录制您的声音")
485
  with gr.Column():
486
+ out41 = gr.Audio(type="filepath", label="降噪后的音频", interactive=False)
487
+ inp43 = gr.Slider(label="机械降噪强度(非AI降噪)", minimum=0, maximum=3, value=2)
488
+ btn41 = gr.Button("机械降噪")
489
+ btn42 = gr.Button("一键AI降噪", variant="primary")
490
 
491
+ btn41.click(Normal_De_Noise, [inp41, inp_micro42, inp43], out41)
492
+ btn42.click(FRCRN_De_Noise, [inp41, inp_micro42], out41)
493
+ with gr.Accordion("📒 AI降噪", open=True):
494
+ _ = f""" 如何使用AI降噪:
495
+ * 第一步,在[方案一]上传你想要降噪的音频,或者在[方案二]录制音频
496
+ * 第二步,点击“一键AI降噪”进行降噪
497
+ * 第三步,下载降噪后的音频
498
+ * 如果您的训练素材比较嘈杂,您可以在此处上传或录制训练音频,降噪后再上传到训练界面
499
+ * 如果您需要用方案二录制您的声音,以下是一段长度合适的文本,供您朗读并录制:
500
+
501
+ 记得春天的时候,小草就转出地面,树上的叶子也抽出来了,大地一片绿色,就像穿上了一件绿衣裳。我就与小孩子一起到田野去捉蜻蜓,玩游戏,比如老鹰合作小鸡或是捉迷藏,又或是跳格子。到了夏天,天气热了,我就会与小孩子到水库里面游泳,那时候水库的安全系数还不是很高,几乎每年都会有事故发生,所以父母都不会让我去游泳的,被发现之后当然就是处罚或是责骂了。可是那时候自己真的很叛逆,也不知道什么是危险,被处罚之后下一次还是回去的。到了秋天,田野一片金黄,山上的野果也成熟了,我就会与自己的伙伴拿着篮子到上山去采,采回来了还要跟自己的好朋友一起分享。
502
+
503
+ * AI降噪与机械降噪的不同:机械降噪主要是移除声音的激波,会对人声造成一定的破坏,而AI降噪主要是移除声音中的非人声部分,可以处理复杂的背景音频环境,但是对人声本身质量问题处理的效果一般
504
+ """
505
+ gr.Markdown(dedent(_))
506
 
507
  with gr.TabItem("缓存清理"): # 创建一个 gr.Blocks() 组件,命名为 "加载和推理"
508
  with gr.Row():
 
523
 
524
 
525
 
526
+ with gr.Accordion("📒 使用指南", open=False):
527
  _ = f""" 如何使用此程序:
528
+ * [一键训练] 上传或录制音频,程序会自动标注音频,一键训练模型,支持训练后推理试听,支持模型保存
529
+ * [声音合] : 在这里可以选择已保存模型进行推理自带可调机械降噪,可以任意选择已训练的音频进行推理
530
+ * [模型修改] : 这里可以选择已保存模型进行重命名方便日推理使用
531
+ * [ AI降噪 ] : 在这里可以上传音频进行AI降噪,一键去除噪音杂声
532
+ * [缓存清理] : 如果训��时出现报错可以尝试缓存清理,每次保存模型会自动清理缓存,如果未保存就重新开始训练需要清理缓存
533
  * !!注意!! 不要生成会对个人以及组织造成侵害的内容
534
+ * 如果您需要录制您的声音,以下是一段长度合适的文本,供您朗读并录制:
535
 
536
  记得春天的时候,小草就转出地面,树上的叶子也抽出来了,大地一片绿色,就像穿上了一件绿衣裳。我就与小孩子一起到田野去捉蜻蜓,玩游戏,比如老鹰合作小鸡或是捉迷藏,又或是跳格子。到了夏天,天气热了,我就会与小孩子到水库里面游泳,那时候水库的安全系数还不是很高,几乎每年都会有事故发生,所以父母都不会让我去游泳的,被发现之后当然就是处罚或是责骂了。可是那时候自己真的很叛逆,也不知道什么是危险,被处罚之后下一次还是回去的。到了秋天,田野一片金黄,山上的野果也成熟了,我就会与自己的伙伴拿着篮子到上山去采,采回来了还要跟自己的好朋友一起分享。
537
 
 
547
  </div>
548
  ''')
549
 
550
+
551
  app.launch(show_error=True, share=False)