SegmentFault 最新的文章 |
- 来自开源世界的超级码丽,中国开源码力榜权威发布!
- 保险柜钥匙插门上,大学生单枪匹马盗取淘宝11亿用户手机号
- Jenkins+Docker+Gitee+SpringBoot自动化部署
- 走进开源项目 - urlcat
- IDEA 中如何完成 Git 版本回退?
- 音视频开发者的福音,快速集成AI配音能力
Posted: 01 Mar 2022 12:20 AM PST 2022 年 1 月 13 日,SegmentFault 思否联合长期耕耘与推广开源文化的开源社共同推出了《2021 中国开源先锋 33 人》榜单,一众开源先锋上榜,一时间引发了行业的广泛关注与讨论。他们当中有贡献代码的开发者、开源项目发起者、开源布道师、开源治理专家、关注开源的投资人、开源社区经理等等,他们推动着开源生态的繁荣与发展。 "开源"是 2021 中国技术发展的年度热词,越来越多人关注开源、贡献开源。然而,谈到中国的开源盛况,却有人提出了不同的观点 ——
在和一众开源老友的讨论后,SegmentFault 思否计划联合开源社、腾源会、X-Lab 实验室发起一个全新的、专属于开源开发者的榜单 —— 中国开源码力榜,通过 GitHub 开发者协作影响力进行排名、评选。 来自 X-Lab 的 OpenDigger 团队对 GitHub 开放的归档日志进行分析,筛选出了 2021 全年 GitHub 协作影响力排名前 10,000 的账号,并号召了社区中数十位开发者及十余家合作社区,通过开放式协作共同核实标注信息、排除机器人账号,第一阶段甄选出了 99 位中国开发者。 码不停蹄,赢!这些来自中国的"开源码丽"值得被更多人认识他们在为这些项目贡献(排名不分先后)Azure, KubeSphere, Ant Design, Flutter, Hyperf, Swoole, Apache SkyWalking, Apache Airflow, RT-Thread,Apache APISIX, DeepModeling, vant, PyO3, DolphinScheduer, Kubernetes, TiDB, TiKV, Engula, Apache Echarts, OpenResty, PaddlePaddle, Apache Dubbo, MobX, Deepin, Wechaty, TDengine, Apache Camel, ice, AntVis, Apache IoTDB, Aapche EventMesh (Incubating), ClickHouse, Apache InLong (Incubating) * 访问项目官网了解上榜开发者项目贡献详情 关于中国开源码力榜中国开源码力榜是由 SegmentFault 思否、开源社、腾源会、X-lab 实验室共同发起的中国开源开发者榜单。 来自 X-lab 的 OpenDigger 团队对 GitHub 开放的归档日志进行分析,筛选出了 2021 全年 GitHub 协作影响力排名前 10,000 的账号,并号召了社区中数十位开发者及十余家合作社区,通过开放式协作共同核实标注信息、排除机器人账号,第一阶段选出了 99 位中国开发者。 榜单发布后,我们收到社区反馈,新增了一位符合标准的来自中国的"开源码丽"Huan (李卓桓),也请开源世界的每一位开发者通过 Github 项目地址能积极的向我们反馈,我们会不间断的进行更新。 通过中国开源码力榜,我们希望开源世界的超级码丽、开源项目背后的开发者们可以被更多人知道、认识和 respect。让更多人关注开源、关注开源开发者成长。 项目地址: https://github.com/OpenSourceWin 项目官网: 评选标准
合作伙伴 |
Posted: 01 Mar 2022 12:19 AM PST Hello,大家好,我是民间发明家,覃健祥。我申请了20多项发明专利,听到这个数字,有的朋友觉得好厉害但又不明白这些发明和我们的日常生活有什么关系,有的甚至问我是不是为了资助奖励申请了一堆凑数的专利。其实,我的大脑里有100个创新点可以申请专利,只是申请专利的时间和金钱成本都太高了,我只能优先申请一些商业价值大的创新程度高的。 为了消除大家对专利的神秘感,我打算写篇文章科普一下。恰好,就在2月23日,我有件名为《基于HMAC算法的密钥保护方法、装置、设备和存储介质》的专利获得了国家专利局的受理通知书,这件专利和淘宝11亿客户手机号被盗的惊天大案有关。我在专利中提出的漏洞普遍存在于各行各业,很多受害者正在被攻击而不自知,而我提出的防护方案具有非常好的通用性。 在此也请各位读者朋友多多转发,好让业界早日受益,若专利成功取得授权,我将授权国防/政务/科研/教育等公共行业免费使用,对本文传播有贡献的读者朋友也可申请免费授权(可用于商业目的)。 月黑风高夜,昏暗的房间里,弥漫着羊肉汤的膻味,一个大学生模样的年轻人端坐电脑前,几亿个手机号离奇出现在沾满指纹的电脑屏幕上。在上千公里之外的不夜城,一个个淘宝网购用户相继收到陌生的微信好友申请,继而被拉进一个微信群领优惠券购物,群主的广告账户余额飞速跳动,一个完美的获取用户隐私变现的闭环形成了。 是什么神秘的力量让中国两大互联网巨头的用户产生了神奇的交集?手机号怎样完成了这不可思议的时空之旅?天之骄子为何铤而走险?敬请收看本期《走近科学》,啊不对不对,手抖打错了,敬请收看本期《了不起的小发明》,哈哈 1. 圈门锁失守,猛虎啖羊羔说到获取几亿个手机号,人们最容易想到的手段之一就是爬虫抓取。在人们的常识中,爬虫属于百度谷歌才有的高科技工具。诚然,百度谷歌要收录全网上百亿的网页,还要保证一定的实时性,技术难度确实非常大,研发费用都是以亿为单位的。 但是,抓取淘宝用户手机号的爬虫却不需要那么高的技术含量,因为淘宝有官方手机客户端,淘宝为自己的手机客户端提供了接口(即API),API有两大优点,使得抓取难度远远小于网页: 一是简洁性。网页不止包含了数据信息,还包含了排版信息,要把数据从网页上提取出来,需要一些复杂的规则和算法。 二是稳定性,网页可能每个月都在改版,改版了,原来提取数据的规则和算法就要重写。而API非常稳定,通常一次定义好了之后几年都不变。 于是,通过API抓取淘宝用户手机号,不需要写复杂的规则就能直接拿到手机号,爬虫开发一次可以用很久。 淘宝的十几亿用户在黑客眼里就是羊圈里成千上万只肥羊,接下来就是想办法突破羊圈的门了。高价值的用户信息必然有着极高的安全等级,淘宝采用了国际上主流的HMAC技术,鉴定调用接口的是官方的客户端,还是未授权的第三方爬虫。HMAC技术的H代表hash,中文翻译是哈希,是全世界银行业金融业广泛采用的基石技术,当下最火的区块链也是靠哈希来保证数据的可信性。 听起来淘宝的用户库是不是跟谍战大片里的银行金库的保险柜一样安全了?遗憾的是,淘宝将HMAC算法用到的密钥,明文放在了HTTP COOKIE里(后面会讲技术细节),这就好比保险柜钥匙插在了门上。圈门大开,虎入羊群,一个大学本科文化水平的人,就这样单枪匹马从淘宝官方的接口中盗取了11.8亿用户的手机号用户名等隐私。 这正是: 蓬门今始为君开, 2.天网疏不漏,伸手必被捉2021年6月,中国裁判文书网公布了一份判决文书,名为《逯某、黎某侵犯公民个人信息一审刑事判决书》,编号为(2021)豫1403刑初78号,这个惊天大案的真相浮出水面。详情可见腾讯的这篇报道:超11亿条!你的淘宝信息可能被泄露了 根据这份判决书,我们简单回顾一下要点: 时间线
损失
被盗用户规模
作案技术手段
开发爬虫的法律风险在我们互联网行业有几句玩笑话:爬虫玩得好,牢饭吃到饱;《Python爬虫:从入门到入狱》。 我科普的目的是提高大家的安全意识和法律意识,分享安全防护技术的同时也做点普法工作。 爬虫违法的高风险区有这些:
拥有编程手艺的朋友们,一定要多了解法律常识,保持技术造福社会的初心,不要迷信"避风港原则",莫伸手,伸手必被捉。 3. 蚁穴何足道,千里之堤溃早在2015年,我就通过乌云漏洞平台向淘宝报告了HMAC密钥明文放在cookie中的安全漏洞,但淘宝认为那个不是密钥,危害等级低。我认为这个是app secret,淘宝认为这只是一个token,这只是文字表述的差异,就算你把它命名为noise,也不改变它在程序中100%承担着HMAC算法secret角色的事实。 这种将明文密钥放在通信报文中的做法,相当于给了攻击者一个永久有效的访问权限,导致接口被攻击者用来抓数据,淘宝的技术团队认为本质上跟淘宝去抓别人的数据没有区别。详细对话过程参见我2015年9月29日发的这条微博 当时这事在阿里内网也引起过关注,但不知道为什么,淘宝一直坚持使用这个显然不安全不专业的方案,即使11亿消费者的隐私被盗,也没能引起淘宝的重视。直到今天(2022年3月1日),淘宝还在用6年前就被我找出过安全漏洞的方案。证据如下: Dear Officer, the lift is running with huge safety risk. 讳疾忌医,终致溃堤,扼腕叹息。 4. 亡羊可补牢,为时犹未晚提供互联网服务的朋友们,一定要定期认真审视自己的安全体系,安全防护方案多多益善,不是说买了一套防火墙就万事大吉了。淘宝这个级别的公司尚且遭遇这么大的安全事故,正说明安全绝不是轻轻松松就能做好的。 希望阿里的朋友们,能帮我把这篇文章转发给阿里相关技术团队,尽早把这扇敞开了7年的大门关上。亡羊补牢,为时未晚。 当然了,11亿消费者手机号这么容易被盗,错误不止是明文密钥这一个,API网关缺少优秀的限流限频和隐私过滤功能也是重要原因。这个做起来也颇有难度,我这几年投资做了一个API安全网关,服务过央企,也服务过小创业公司,遇到很多技术挑战,也申请了不少专利,遍尝个中酸甜苦辣。 懂技术的读者朋友可能会觉得,把密钥隐藏在js代码里,反复编码加密几次,再混淆一下代码,不就安全了吗?其实不是的,由于浏览器运行环境和JavaScript语法的特殊性,网页端的JavaScript是解释执行的,可被重写覆盖的,JavaScript藏不住真正的秘密。我只用了一行代码,几秒钟就找出淘宝的密钥了,有了密钥,我才发现居然就明文放在cookie里。上面的两张截图可以看到,我把密钥打印在控制台或者警告了。 用kotlin开发的Android客户端可能也有类似的风险,我还没测试过,预计比网页端破解难度大一些。 基于md5或者sha系列哈希函数的签名验证机制,在互联网使用得非常广泛,这从各大开放平台的签名算法文档就可以看出来。绝大多数的网页版,都能用一行代码几秒钟破解出密钥,无论你把密钥藏得多深。 有鉴于此,我在2015年发明了一种可以真正防止网页端HMAC密钥被盗的方法,并成功运用在我公司的所有产品上。直到2022年,发现业界仍然没有类似的技术,才申请了专利。这个专利的核心是保护密钥安全,秘密在于以下几点: 权利要求1:使用衰减后的密钥哈希算法都是摘要算法,从输入到输出存在信息衰减,无法逆推。平常大家下载一个几百兆的软件,用于验证下载文件完整性的hash(也叫check sum)只有16~32字节,足见衰减系数有多大。 我们可以将明文的密钥预先执行一部分衰减运算,再将衰减后的密钥放在网页端JavaScript代码中,在网页端JavaScript代码中实现一个变种的hash函数,使其利用衰减后的密钥计算出与标准hash函数兼容的结果。这样,攻击者就不能从网页端偷到真正的明文密钥了,因为,你没法偷走一个不存在的东西。 攻击者拿到衰减后的密钥,用标准的hash函数必然算不出正确的签名,便无法破解HMAC安全机制。 这就是本专利的权利要求1(专利法规定,权利要求1是基石,权利要求2,3,4都是基于权利要求1的)。 这是篇科普文,我尽量讲得通俗易懂些,详细的技术细节不展开讲,我在专利技术交底书里写了证明过程,大家有兴趣看得话,评论里告诉我,我后面贴上来。 权利要求2:保护变种hash函数通过代码混淆,使混淆后的代码可读性大大降低,大大提高攻击者人肉阅读变种hash函数源码的时间成本。 实际上,即使不混淆,写得极其优雅的md5, sha256函数源代码也非常复杂,我感觉因爬虫被判刑的技术员,读得懂md5源代码的屈指可数。 此外,还可以将混淆后的hash函数代码编译成web assembly二进制产物,攻击者只能反编译再阅读,难度又提升了一个数量级。 权利要求3:定期自动更换写一个自动化程序,定期执行,更换密钥,以及变种hash函数的算法,更换的时间间隔远远小于攻击者破解的时间,就算他们破解出来也没用了。 5. 摆下迷魂阵,请君入瓮来在能检测到爬虫行为或者攻击行为的前提下,第一时间用攻防技术硬扛不一定是最佳选择。兵者,诡道也,业内还有这么一些请君入瓮的方法: 蜜罐检测到攻击行为后,并不提示错误码和警告消息,而是故意卖给破绽,用一些假的商业价值不大的数据喂养攻击者,令其乐不思蜀,不再精进技术去攻击真正敏感的地方。 毒丸若是公开的接口被抓取,为保证正常用户服务不受影响,识别出非法爬虫后,在数据里埋设毒丸:给爬虫返回真假参半的数据,令其被领导或者黑产买家责难数据质量差,生意难以为继。 养猪若对方变现模式是非法外挂,刚检测出来时,可不打草惊蛇,待对方小有所成发展了一定数量收费客户后,一举封杀,退款纠纷将仅使其焦头烂额。 钓鱼若对方变现模式是售卖抓取的数据,第一时间不封禁其抓取通道,而是收集证据,够刑事立案标准再诉诸法律。 如果大家喜欢这篇文章,除了转发之外,还可以扫描下方二维码关注我们的微信公众号:代码狗说代码 我的同事会在那里和我一起写文章,都是信息安全/软件技术/智能硬件领域的一些科普,通俗易懂,也有技术含量,欢迎大家来交流。 |
Jenkins+Docker+Gitee+SpringBoot自动化部署 Posted: 28 Feb 2022 03:47 AM PST 当我们使用传统的开发方式开发后台系统时,每写完一个功能点就需要重新运行一下项目,然后进行测试,如果是项目比较小还可以,但是如果项目比较大的话,由于涉及的人员比较多,这种开发方式就比较麻烦。基于此,我们就需要使用Jenkins配合Gitee搭建一个自动化部署平台,并将代码托管到服务器上,这样减轻了本地的电脑压力,也解放了部署的流程。 1, 搭建Jenkins平台首先,我们需要搭建一下Jenkins自动化构建平台。首先,我们需要安装Docker,然后在Docker中安装Jenkins,安装的命令如下:
通过以上指令即可成功安装Docker并启动,接下来我们通过Docker运行Jenkins。
执行上述指令Docker会自动拉取Jenkins的镜像并启动,因为我们要部署的是SpringBoot,所以需要准备JDK和Maven环境,不过该Jenkins镜像自带了JDK环境,只需准备一下Maven即可,首先,下载Maven压缩包,命令如下:
然后,使用命令解压文件。
解压之后千万要注意Maven所在的目录,比如:
将它挂载到容器的目录里,
接下来,我们使用服务器的ip加端口8080的方式访问Jenkins。
意思是你可以在/var/jenkins_home/secrets/initialAdminPassword这个文件中查看到管理员密码,不过这是Jenkins容器内的目录,我们在启动Jenkins的就挂载了Jenkins的关键目录/var/jenkins_home,宿主机目录为/home/jenkins-data,所以可以使用如下指令查看管理员密码。
得到密码后输入到Jenkins页面解锁Jenkins,然后点击安装推荐的插件。 2, Jenkins平台配置接下来,就是对Jenkins平台的配置,首先配置Maven。 以同样的方式,再新增一个配置: 3,创建SpringBoot应用首先,我们创建一个简单的SpringBoot应用进行测试,控制器代码如下。
然后在配置文件application.yml中添加:
并在main下新建docker文件夹,在docker文件夹下新建Dockefile文件,内容如下。
需要注意的是ADD指令的编写,当SpringBoot应用打包完成后,其jar包会被放在target目录下。 4,Gitee配置推送完成后,回到Jenkins管理界面,我们来完成Gitee的配置,打开系统配置。 5, 新建自动化部署任务配置完成,接下来新建一个任务,点击新建Item。 然后打开Gitee项目中的WebHooks,添加webHook。 此处的URL需要填入一个公网IP,所以如果你是用的虚拟机,就需要用内网穿透工具映射一下。
该脚本表示删除正在运行的app_docker容器,并删除app_docker:1.0镜像,然后使用mvn命令打包从Gitee拉取来的项目代码,接着使用项目中的Dockerfile文件构建出一个镜像,名称为app_docker:1.0,最后运行该镜像。 6,打包测试最后点击保存,部署任务就创建完成了,我们来测试一下有没有问题。 |
Posted: 28 Feb 2022 07:23 AM PST 大部分人都有个参与开源项目的梦,可项目在前却不知如何下手?今日有幸遇到了可以下手的库 — urlcat urlcat 只有 267 行代码的开源项目,却收获了 1.4 k 的 star,周下载量 1 w 以上,这是我目前遇到过源码最少的开源项目,下面就来一探究竟,看看每个文件在项目中的作用。 .github从命名上看是 issue 和 pr 模板,这三个模板可以有效降低作者与使用者的沟通成本,高效解决问题,其中: bug_report.md 描述:
fature_request.md 描述:
pull_request_template.md 描述:
docs用 What、Why、How 精准阐述了项目的存在的意义。
除此之外,还提供了详细的 api 说明,以及告诉大家如何参与该项目,贡献自己的代码。 src存放源码的文件夹,之后会单独写一篇关于该源码的文章。 test都说单元测试很重要,可都觉得写单元测试费时费力,即便是区区几百行代码,该作者依旧写了如此详细的单元测试,这是一种态度。 .all-contributorsrc一个项目能够保持活力,持续不断的发展,需要众人的力量。 .editorconfig有助于在不同的编辑器和 IDE 中保持一致的编码样式。
.eslintignore告诉 eslint 忽略特定文件和目录,不要对其进行检测。
.eslintrc.jseslint 配置文件
关于 eslint 的配置已经有不少好文,感兴趣的可以看看这篇文章。 相关文章: .gitignore提交代码时,需要忽略一些文件时,该配置就很有用了
.npmignore当需要发布 npm 包时,可以忽略一些不需要发布到 npm 的文件。
.travis.yml一个持续集成服务的配置文件
关于持续集成服务,看看阮一峰老师的这篇文章就够了。 相关文章: CODE_OF_CONDUCT.md第一次注意到这个文件,搜了相关资料,原来是行为准则。看了篇博文也了解其作用。行为准则对开源社区的健康、可持续发展有着至关重要的影响。 相关文章: CONTRIBUTING.md贡献指南,前面已提过。 LICENSE开源许可证,授权他人与特定权利来使用的产品。防止那些拿来主义。怎么选择开源许可证,在这里借用下阮一峰老师的一张图。 相关文章: README.md该作者的一份 README.md 基本涵盖了之前提到的 docs 的所有内容,很简洁,跟代码一样简洁😄😄 jest.config.js单元测试配置文件,这也是我所欠缺的,之后会详细学习一下。
相关文章: package-lock.json简单理解,为了锁定第三方包的版本号, 由于项目会依赖大量第三方包,第三方包也会依赖其他第三方包,当包更新了不兼容的 api 时,在执行 npm install 之后,项目运行时,可能会发生意想不到的情况。 相关文章: package.json作为前端人,都再熟悉不过,分享几个不常见,但很关键的配置: 指定 node 版本号:
指定 npm 版本:
如果你打算发布一个 npm 包, 钩子,npm 脚本有
相关文章: renovate.json一种似曾相识的感觉,是它,就是它。 Renovate 是一个开源工具,用于自动化:
tsconfig.json当使用 typescript 开发项目时就会用到该配置文件。 相关文章: 总结除源码和单元测试之外,对其他文件的用途都做了说明,做开源不易,当我们信手拈来之时,这些开源项目作者付出了太多。一群来自世界各地的人,共同完成一件事,除了专业技能之外,看到更多的是一种态度。 参考文章: |
Posted: 28 Feb 2022 06:07 PM PST @[toc] 其实这个松哥之前写过文章,但是时间久远了,所以今天再和小伙伴们重新捋一捋这个话题,顺便也来聊聊如何在 IDEA 中进行 Git 的版本回退。 Git 中的撤销操作,我们可以归纳为四类:
1. 基于命令行1.1 工作区的代码想撤销可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过 首先我们执行了 1.2 add 到暂存区的代码想撤销如果想要撤销,但是代码已经提交到暂存区了,不用担心,也能撤销,分两个步骤:
将暂存区的代码撤销,我们可以使用 这里的代码都比较简单,核心的过程就是先执行 1.3 提交到本地仓库的代码想撤销同样的,提交到本地仓库的代码一样也可以撤销,我们可以利用
看下面一系列的操作:
当然以上操作都是基于命令行的,如果你命令行操作比较熟练的话,其实命令行操作比 IDEA 上点点点要快很多。 1.4 远程仓库撤销如果代码提交到远程仓库了,想要撤销,那就如 1.3 小节所讲,先在本地仓库撤销,然后 push 到远程仓库即可。 2. 基于 IDEA看懂了命令行操作,再看基于 IDEA 的操作就容易多了。 2.1 未提交就撤销对于第一小节的前两种撤销操作,即修改的文件还没 commit,此时想要撤销,方式很简单,点击 IDEA 右上角的撤销按钮: 如果你修改了文件,无论有没有执行 这里会列出来所有修改但是没有 commit 的文件,想要撤销哪个文件的修改,就勾选该文件,然后点击 Rollback 按钮就完成了撤销操作。 2.2 commit 了想撤销如果已经 commit 了,那么就需要先打开提交日志,点击如下按钮打开: 也可以直接点击 IDEA 右上角的时钟图标,快速打开提交日志: 提交日志类似下面这样: 此时的回退就分情况了。 首先这个撤销操作分两种:
我们分别来看。 2.2.1 Undo CommitUndo Commit 这个操作只能在最近一次提交上使用,不能在其他提交上使用,最近一次 commit 上,右键单击,如下图: 其他的 commit 上右键单击: 既然如此,我们就来看看最近的一次 commit 如何 Undo Commit。 在最近一次 commit 日志上右键单击后选择 Undo Commit,如下图: 选中后,直接点击 OK,撤销最近一次的 commit。 这就是撤销最近一次 commit,撤销之后,本地的修改相当于变成了已 add 但是未 commit 的状态,此时我们可以继续开发新代码,然后再 commit,再 push;或者也可以像 2.1 小节介绍的那样,继续撤销操作。 我电脑上的 IDEA 在这块操作中有个偶发性问题,就是撤销掉 commit 之后,IDEA 检测不到文件处于未提交状态,需要我把 IDEA 关掉重新打开,IDEA 就能发现文件处于未提交状态了,此时就可以按照 2.1 小节的步骤继续回退了,这块小伙伴们在试验的时候可以留意下。 2.2.2 Revert CommitRevert Commit 这个操作到处都能用,不同于 Undo Commit,Revert Commit 之后,会产生一条提交记录。相当于 Revert Commit 其实也是提交,只不过提交的内容刚好相反,刚好刷掉已有内容。 Revert Commit 操作可以用在所有的日志上,而不仅仅是刚刚提交的 commit。 操作方式如下: 找到需要回滚的地方,右键单击,选择 Revert Commit: 此时会弹出来一个提交的对话框,就是一个普普通通的 commit 对话框,如下: commit 之后,可以看到内容已经撤销了,提交日志中也多了一条记录,如下图: 2.3 push 了想撤销如果已经 push 到远程仓库了,怎么撤销? 其实跟 2.2 小节一样,先在本地仓库撤销,撤销完成后,重新修改代码,最后再 force push 就行了,不过 force push 的时候,注意别把同事的代码给覆盖了。 3. 小结好啦,今天和小伙伴们分享了 Git 中的几个撤销问题,有问题的小伙伴欢迎留言讨论呀~ |
Posted: 28 Feb 2022 12:20 AM PST 音视频内容创作者对剪辑应用中的AI配音需求与日俱增。它的优点很多,不光可以解决雇佣人力配音的成本以及创作者本身的口音、语言等限制,还可以大幅提升生产效率。比如,短视频的播放时间短的几十秒,长的vlog类型视频有4-5分钟,使用AI配音功能可以在短时间内实现多个剪辑需求。 HMS Core音频编辑服务(Audio Editor Kit)提供AI配音服务,帮助开发者在应用中轻松构建语音合成功能,一键输出文字即可转换语音。它支持乖萌童声,亲切女声,阳光男声,英文男声、女声等多种风格音色,还可以定制自己想要的音色。音色自然流畅,情感丰富,满足有声阅读、音频内容制作、剪辑等多种开发者关注的热门场景。 开发实战1.开发准备详细准备步骤可参考华为开发者联盟官网: https://developer.huawei.com/... 2.编辑工程集成2.1设置应用的鉴权信息开发者需要通过api_key或者Access Token来设置应用鉴权信息。
2.2初始化环境初始化音频编辑管理类、创建时间线以及需要的泳道。
导入音乐。
3. AI配音功能集成调用HAEAiDubbingEngine实现AI配音功能。
Demo演示<很高兴见到你> 更多华为音频编辑服务详情,请参考: 了解更多详情>> 访问华为开发者联盟官网 关注我们,第一时间了解 HMS Core 最新技术资讯~ |
You are subscribed to email updates from SegmentFault 最新的文章. To stop receiving these emails, you may unsubscribe now. | Email delivery powered by Google |
Google, 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States |
No comments:
Post a Comment