语音合成,让阿里云小姐姐为你的视频配音

    • 一、注册登录阿里云获取appkey
    • 二、普通方式获得语音合成
    • 配音软件已开发成功
    • 三、利用python调用SDK进行语音合成
      • 1.官方SDK
      • 2.访问url获取
  • 总结

轻松实现语音合成,让阿里云小姐姐为你的视频配音
本次调用的是阿里云的语音合成SDK,调用接口进行语音合成。
下面来看看具体实现步骤以及两种利用python进行语音的代码。

一、注册登录阿里云获取appkey

1.登入阿里云:https://www.aliyun.com/
2.需要实名认证才行哟
3.点击控制台
4.在搜索界面搜索智能语音交互,进入智能语音交互控制台

5.点击进入后点击我的项目–创建项目


6.随便输入项目名词和描述即可

7.即可得到项目appkey

8.点击总览,点击获取AccessToken

在其中还有很多音频可以试听,可以选择自己喜欢的声音。
这是语音合成的接口说明,不同的声音又不用的voice参数值。
https://help.aliyun.com/document_detail/84435.html?spm=a2c4g.11186623.6.591.73831e0duk4FNT

二、普通方式获得语音合成

通过将网址放入浏览器获取语音,修改自己的appkey和accessToken和需要语音合成的语句即可。

https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts?appkey=你的appkey&token=你的accesstoken&format=mp3&voice=Aixia&speech_rate=0&volume=100&text=你好呀,小姐姐

下面是各个参数说明

将你的语句修改即可,这种方式最多300个字符,如果需要更多的话,就需要利用python来解决了。

配音软件已开发成功

网址:https://blog.csdn.net/LeeGe666/article/details/106604378

三、利用python调用SDK进行语音合成

有两种方式

1.官方SDK

第一种是调用阿里云SDK,大家可以到https://help.aliyun.com/document_detail/120699.html?spm=a2c4g.11186623.6.594.3e86259esNOsnh中了解详情及配制相关包。
下面铺上代码:

# -*- coding: utf-8 -*-
import threading
import ali_speech
from ali_speech.callbacks import SpeechSynthesizerCallback
from ali_speech.constant import TTSFormat
from ali_speech.constant import TTSSampleRateclass MyCallback(SpeechSynthesizerCallback):# 参数name用于指定保存音频的文件def __init__(self, name):self._name = nameself._fout = open(name, 'wb')def on_binary_data_received(self, raw):print('MyCallback.on_binary_data_received: %s' % len(raw))self._fout.write(raw)def on_completed(self, message):print('MyCallback.OnRecognitionCompleted: %s' % message)self._fout.close()def on_task_failed(self, message):print('MyCallback.OnRecognitionTaskFailed-task_id:%s, status_text:%s' % (message['header']['task_id'], message['header']['status_text']))self._fout.close()def on_channel_closed(self):print('MyCallback.OnRecognitionChannelClosed')def process(client, appkey, token, text, audio_name, voice):callback = MyCallback(audio_name)synthesizer = client.create_synthesizer(callback)synthesizer.set_appkey(appkey)synthesizer.set_token(token)synthesizer.set_voice(voice)synthesizer.set_text(text)synthesizer.set_format(TTSFormat.WAV)synthesizer.set_sample_rate(TTSSampleRate.SAMPLE_RATE_16K)synthesizer.set_volume(50)synthesizer.set_speech_rate(0)synthesizer.set_pitch_rate(0)try:ret = synthesizer.start()if ret < 0:return retsynthesizer.wait_completed()except Exception as e:print(e)finally:synthesizer.close()def process_multithread(client, appkey, token, number):thread_list = []for i in range(0, number):text = "这是线程" + str(i) + "的合成。"audio_name = "sy_audio_" + str(i) + ".wav"thread = threading.Thread(target=process, args=(client, appkey, token, text, audio_name))thread_list.append(thread)thread.start()for thread in thread_list:thread.join()if __name__ == "__main__":client = ali_speech.NlsClient()client.set_log_level('INFO')voice = 'Aixia'appkey = '你的appkey'token = '你的token'text = "哼!都怪你,也不哄哄人家,人家超想哭的,捶你胸口,大坏蛋!捶你胸口你好讨厌!要抱抱嘤嘤嘤哼,人家拿小拳拳捶你胸口!大坏蛋,打死你..."audio_name = 'audio.mp3'process(client, appkey, token, text, audio_name, voice)# 多线程示例# process_multithread(client, appkey, token, 2)

2.访问url获取

这种方式唯一的好处就是不用安装SDK,pip中有requests即可。
这里我自己做了一个根据句号的中文字符串切割算法,限制结束符为句号"。",同时一段文字只能小于300字符(免费的情况下),进行循环获取每段语音的音频文件(voice1.mp3, voice2.mp3,·····)。
代码如下:

# encoding:utf-8
import requests
from requests.exceptions import RequestException
import urllib.parse
import urllib.request
import re
import osheaders = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"}def request_url(url, name):response = requests.get(url, headers=headers)print('状态码: ' ,response.status_code)try:if response.status_code == 200:download_voice(url, name)return Noneexcept RequestException:return Nonedef download_voice(url, name):if not os.path.exists('./audioFiles'):os.makedirs('./audioFiles')file_path = r'./audioFiles/{}.mp3'.format(name)print('正在下载:', name, '.mp3\n')urllib.request.urlretrieve(url, file_path)logging.info(name, '.mp3下载完成!!!!!!!!!')def not_empty(s):return s and s.strip()def cut_text(text, length):text = re.sub('[\r\n\t]', '', text)text_array = list(filter(not_empty, text.split('。')))text_i = [0]text_len = 0list_1 = []for i in range(len(text_array)):list_1.append(i)text_len = text_len + len(text_array[i])# print(text_len)if text_len > length:text_len = 0text_len = text_len + len(text_array[i])# print(text_len)text_i.append(i-1)list_1.clear()if text_i[-1] < (len(text_array) -1):text_i.append(len(text_array) -1)# print(text_i)new_text_i = []for i in range(len(text_i) - 1):list1 = []for a in range(text_i[i] + 1, text_i[i+1] + 1):list1.append(a)new_text_i.append(list1)new_text_i[0].insert(0, 0)# print(new_text_i)new_text_array = []for t in new_text_i:x = ''for t1 in range(len(t)):x += text_array[t[t1]] + '。'new_text_array.append(x)return new_text_arraydef get_voice(appkey, token, voice, speech_rate, format, volume, file_name, text, id):url = 'https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts?appkey=' + appkey \+ '&token=' + token + '&format=' + format + '&voice=' + voice + '&speech_rate=' + \str(speech_rate) + '&volume=' + str(volume) + '&text=' + textrequest_url(url, file_name + str(id))def get_network():response = requests.get('https://www.baidu.com')return response.status_codedef get_token_expire(appkey, token):url = 'https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts?appkey=' + appkey \+ '&token=' + token + '&text=你好'response = requests.get(url, headers=headers)return response.status_codedef compose(appkey, token, voice, speech_rate, format, volume, file_name, text):if get_network() == 200:res = get_token_expire(appkey, token)if res != 400:if len(text) < 300:get_voice(appkey, token, voice, speech_rate, format, volume, file_name, urllib.parse.quote(text), 0)else:text_array = cut_text(text, 300)# print(text_array)for id in range(len(text_array)):get_voice(appkey, token, voice, speech_rate, format, volume, file_name, urllib.parse.quote(text_array[id]), id)return 'success'else:return 'token expired'else:return 'network fail'if __name__ == '__main__':voice = 'Aixia'appkey = 'VNSQETOK5RRVSeRH'token = '0f3947bec58446c581dc46544bb3224e'speech_rate = -200format = 'mp3'volume = 100file_name = 'audio'# text = '''岁月匆匆而过,悄悄回首,我已走进小学生活近六年了,念及往事,不生唏嘘。那人生道路上的无数个第一次就像波涛起伏的海浪,荡漾在我的心头。是那样的亲切而有熟悉,又是那样的美好而和谐。第一次上台表演的经历就一直使我不能忘怀。那是我在五岁第一次上台时,在上台前,我的心忐忑不安,总是无法调整出好的情绪。开始表演了,强烈的镁光灯直射下来,就像一双犀利的眼睛,盯着我喘不过气来。我就更紧张了。当我看到台下这么多人的目光聚集在我的身上,原来就担心的我一下子忘了自己的动作,傻呆呆的站在幕布旁。那一刹那,我听到的音乐就像奔驰的野马,嗡嗡作响;镁光灯则是一把锋利而尖锐的箭,射进了我的内心深处。好在这时,老师在幕布旁不断地鼓励我,小声地说:“你一定能行!”我深深的吸了一口气,很快镇静下来。我微笑着自信地走上了舞台。一上台,我就好像置于一池碧水中,身体变得那样的舒展,跳的每一个动作都是那么娴熟而自然。那音乐如潺潺的溪水,镁光灯也如正午的暖阳。我的舞姿犹如一只傲气的白天鹅在湖面上游动;又像一缕纯洁的阳光,干净而温暖;更像一直蓬勃的向日葵,正努力地向上生长。终于,我在观众们的掌声中退了场。事后,我一直在想:有自信不一定能成功。但是,如果你充满自信,就有成功的希望。自信是飞向蓝天的翅膀,是航行的船桨。在任何时候,自信都会助你一臂之力,助你到达成功的彼岸。让自己成为一个充满自信的人吧!我爱第一次,他教会了我成功的秘笈:充满自信,挑战自信。*'''text = '''是这样的,欠款相关的情况呢,可以在您的支付宝查看,您记得处理一下这个事情。'''res = compose(appkey, token, voice, speech_rate, format, volume, file_name, text)print(res)

总结

通过语音合成,经常做视频配音的人压力可以小点了,阿里云的语音技术拟人化也比较高,声音也比较甜美,听起来也舒服,也不会出错,确实是一种很好的配音选择。
用第二种方法文本的字数都没有限制,大家可以放心使用。

token隔几个小时就会失效,尽量自己注册阿里云账户获取自己的!!!

这里是看到b站@JOKER鹏少的视频来的灵感,看到有这么好的语音合成技术,便把免费语音合成的代码写出来与大家分享。
同时也可以到知乎@NH4L看看语音合成的具体效果:https://zhuanlan.zhihu.com/p/123930042
参考链接:https://help.aliyun.com/document_detail/120699.html?spm=a2c4g.11174283.6.594.59e87275VzZhum
https://www.bilibili.com/video/BV1MV411f7Uc

[免费配音软件]语音合成,让阿里云小姐姐为你的视频配音相关推荐

  1. 阿里云小福利!水杯免费送

    阿里云小福利! 在阿里云花两分钟简单操作,即可获取水杯! 羊毛等你来薅,点击链接即可打开. 2 分钟部署人生模拟器,体验得加薪水杯

  2. 告别后端!阿里云小程序 Serverless 教你如何 30 分钟开发小程序!

    CSDN摄于云栖大会 整理 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 2018 年 9 月 12 日,支付宝小程序正式上线.仅仅过去一年时间,支付宝小程序发展飞速:月活跃用户数突破5亿 ...

  3. 阿里云小程序云发布小程序跨平台开发框架,助力开发者一次开发,多端运行

    跨平台小程序开发框架是什么? 跨平台小程序开发框架是支付宝小程序开发工具内新增的开发模块,阿里云小程序云(https://www.aliyun.com/product/miniappdev)与知名跨平 ...

  4. nps内网穿透服务器搭建教程(阿里云)-小宇特详解

    nps内网穿透服务器搭建教程(阿里云)-小宇特详解 前期准备 1.一台云服务器 2.配置安全组 3.在自己的电脑上安装nps 云服务器的话自己买,我这里使用的是阿里云 讲一下配置安全组 打开阿里云的官 ...

  5. 阿里云小程序时代来临,中小企业和商家该如何入局

    这是一个生意繁忙的周末. 你坐在20平米的餐饮店收银台,习惯性地打开阿里云小程序. 这时,你的管理后台收到一条条订单信息,可能来自你的店内,也可能来自数十公里外. 你"聘用"的1号 ...

  6. 阿里云小蜜获评智能客服技术产品/解决方案大类推荐品牌

    摘要: 7月24日,由客户世界机构主办,中国呼叫中心与电子商务发展研究院.全球呼叫中心产业联盟联合支持的客户世界• 洞察者2018北京论坛在丽景湾国际酒店圆满举行.作为全球领先的智能客服产品及方案提供 ...

  7. python3:调用阿里云小蜜代码示例

    最近有一个项目需要调用阿里云小蜜,我就拿python调用了一下,然后在官网居然没有找到很好的sample code.就只能自己硬着头皮写一下啦 import base64 import urllib. ...

  8. 配音软件免费版哪个好?分享2款好用的配音软件帮你快速配音

    目前做视频对配音的需求越来越大,市场上的配音软件也是五花八门,找到一款适合自己的配音软件不容易.小编根据多年的运营经验,推荐比较常用的两款配音软件,而且只需要自己简单操作就可以免费使用,大家来一起看看 ...

  9. 阿里云启动API创新大赛 设视频技术为场景赛题

    摘要: 阿里云API大赛一直以践行API经济为主旨,涌现出了很多基于API服务的优秀解决方案方案作品.本届API大赛主题为"智慧开放,互链解决",基于广义的API经济理念,将不局限 ...

  10. 免费12个月!阿里云助力中小企业0成本上云

    最新消息,阿里云宣布为企业用户推出云服务器免费12个月扶持计划,助力中小企业0成本上云.阿里云表示,该计划每年投入2000万,超5万中小企业受益,本计划已于2019年11月27日上线. 阿里云智能总裁 ...

最新文章

  1. linux kernel list_head
  2. ICPC 2019国际大学生程序设计竞赛,中国高校未能夺冠
  3. Zend Studio添加ThinkPHP代码提示方法
  4. 在线学习(Online Learning)
  5. android 视图覆盖,如何在Android中添加覆盖视图超过其他视图?
  6. 学会拒绝别人的6个技巧_多少人败在不懂拒绝上!牢记10个高情商拒绝技巧,人生越来越顺...
  7. ios 与web服务器传值_中高级iOS大厂面试宝典,拿到offer率80%,金三银四将是你的新起点...
  8. MongoDB入门(一)——数据库概述
  9. hive 前7天标准差_为啥科目三考试前只让练7天?教练实话实说:这是为你们好...
  10. 如何在 Simulink 中使用 PID Tuner 进行 PID 调参?
  11. Linux 下非 root 用户安装 theano(配置 GPU)
  12. linux文件名变量,文件名通配符、变量以及管道知识点的总结
  13. bootstrap-validation 对表单进行比较全的验证
  14. webservice 安全性 对外_WebService的安全性讨论【身份识别】
  15. C程序设计--结构体+单向链表
  16. chinapub matlab,MATLAB 2020从入门到精通
  17. 电脑怎么打出冒号符号_电脑键盘怎么打出冒号符号
  18. movs 数据传送指令_数据传送指令之:MOV指令
  19. JavaScript 数据结构与算法(二)哈希表
  20. Fractal Streets

热门文章

  1. 泰勒·考恩的《大停滞?》
  2. 认知当下 原子世界的技术发展停滞了么
  3. c语言启动程序句柄无效,win7系统玩英雄联盟突然弹出“句柄无效”窗口的解决方法...
  4. 科技爱好者如何避免成为“民科”,以及为何科技爱好团体必须杜绝“民科”现象...
  5. 大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:2.外观模式之一键开关
  6. 【论文笔记】Deep Survival: A Deep Cox Proportional Hazards Network
  7. ASP.NET Core WebApi返回结果统一包装实践
  8. 性能测试 - 响应时间的衡量指标 RPS Average Min Max P90 P95 P99
  9. MFC导入图标文件的方法
  10. crypto405-grasshopper(网鼎杯2022)