经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
口播神器,基于Edge,微软TTS(text-to-speech)文字转语音免费开源库edge-tts实践(Python3.10)
来源:cnblogs  作者:刘悦的技术博客  时间:2023/3/8 11:00:32  对本文有异议

不能否认,微软Azure在TTS(text-to-speech文字转语音)这个人工智能细分领域的影响力是统治级的,一如ChatGPT在NLP领域的随心所欲,予取予求。君不见几乎所有的抖音营销号口播均采用微软的语音合成技术,其影响力由此可见一斑,仅有的白璧微瑕之处就是价格略高,虽然国内也可以使用科大讯飞语音合成进行平替,但我们只想要最好的那一个,本次我们使用免费的开源库edge-tts来实现文本转语音操作,薅微软edge的羊毛。

TTS文本转语音基础使用方式

首先安装edge-tts库:

  1. pip3 install edge-tts

安装成功后,直接在终端运行edge-tts命令:

  1. edge-tts

显示帮助菜单即代表安装成功:

  1. ? Downloads edge-tts
  2. usage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l] [--rate RATE] [--volume VOLUME] [-O OVERLAPPING]
  3. [--write-media WRITE_MEDIA] [--write-subtitles WRITE_SUBTITLES] [--proxy PROXY]

随后输入命令:

  1. edge-tts --list-voices

该命令可以将Edge浏览器中,内置的语言角色列表列出来:

  1. Name: af-ZA-AdriNeural
  2. Gender: Female
  3. Name: af-ZA-WillemNeural
  4. Gender: Male
  5. Name: am-ET-AmehaNeural
  6. Gender: Male
  7. Name: am-ET-MekdesNeural
  8. Gender: Female
  9. Name: ar-AE-FatimaNeural
  10. Gender: Female
  11. Name: ar-AE-HamdanNeural
  12. Gender: Male
  13. Name: ar-BH-AliNeural
  14. Gender: Male
  15. Name: ar-BH-LailaNeural
  16. Gender: Female
  17. Name: ar-DZ-AminaNeural
  18. Gender: Female
  19. Name: ar-DZ-IsmaelNeural
  20. Gender: Male
  21. Name: ar-EG-SalmaNeural
  22. Gender: Female
  23. Name: ar-EG-ShakirNeural
  24. Gender: Male
  25. Name: ar-IQ-BasselNeural
  26. Gender: Male
  27. Name: ar-IQ-RanaNeural
  28. Gender: Female
  29. Name: ar-JO-SanaNeural
  30. Gender: Female
  31. Name: ar-JO-TaimNeural
  32. Gender: Male
  33. Name: ar-KW-FahedNeural
  34. Gender: Male
  35. Name: ar-KW-NouraNeural
  36. Gender: Female
  37. Name: ar-LB-LaylaNeural
  38. Gender: Female
  39. Name: ar-LB-RamiNeural
  40. Gender: Male
  41. Name: ar-LY-ImanNeural
  42. Gender: Female
  43. Name: ar-LY-OmarNeural
  44. Gender: Male
  45. Name: ar-MA-JamalNeural
  46. Gender: Male
  47. Name: ar-MA-MounaNeural
  48. Gender: Female
  49. Name: ar-OM-AbdullahNeural
  50. Gender: Male
  51. Name: ar-OM-AyshaNeural
  52. Gender: Female
  53. Name: ar-QA-AmalNeural
  54. Gender: Female
  55. Name: ar-QA-MoazNeural
  56. Gender: Male
  57. Name: ar-SA-HamedNeural
  58. Gender: Male
  59. Name: ar-SA-ZariyahNeural
  60. Gender: Female
  61. Name: ar-SY-AmanyNeural
  62. Gender: Female
  63. Name: ar-SY-LaithNeural
  64. Gender: Male
  65. Name: ar-TN-HediNeural
  66. Gender: Male
  67. Name: ar-TN-ReemNeural
  68. Gender: Female
  69. Name: ar-YE-MaryamNeural
  70. Gender: Female
  71. Name: ar-YE-SalehNeural
  72. Gender: Male
  73. Name: az-AZ-BabekNeural
  74. Gender: Male
  75. Name: az-AZ-BanuNeural
  76. Gender: Female
  77. Name: bg-BG-BorislavNeural
  78. Gender: Male
  79. Name: bg-BG-KalinaNeural
  80. Gender: Female
  81. Name: bn-BD-NabanitaNeural
  82. Gender: Female
  83. Name: bn-BD-PradeepNeural
  84. Gender: Male
  85. Name: bn-IN-BashkarNeural
  86. Gender: Male
  87. Name: bn-IN-TanishaaNeural
  88. Gender: Female
  89. Name: bs-BA-GoranNeural
  90. Gender: Male
  91. Name: bs-BA-VesnaNeural
  92. Gender: Female
  93. Name: ca-ES-EnricNeural
  94. Gender: Male
  95. Name: ca-ES-JoanaNeural
  96. Gender: Female
  97. Name: cs-CZ-AntoninNeural
  98. Gender: Male
  99. Name: cs-CZ-VlastaNeural
  100. Gender: Female
  101. Name: cy-GB-AledNeural
  102. Gender: Male
  103. Name: cy-GB-NiaNeural
  104. Gender: Female
  105. Name: da-DK-ChristelNeural
  106. Gender: Female
  107. Name: da-DK-JeppeNeural
  108. Gender: Male
  109. Name: de-AT-IngridNeural
  110. Gender: Female
  111. Name: de-AT-JonasNeural
  112. Gender: Male
  113. Name: de-CH-JanNeural
  114. Gender: Male
  115. Name: de-CH-LeniNeural
  116. Gender: Female
  117. Name: de-DE-AmalaNeural
  118. Gender: Female
  119. Name: de-DE-ConradNeural
  120. Gender: Male
  121. Name: de-DE-KatjaNeural
  122. Gender: Female
  123. Name: de-DE-KillianNeural
  124. Gender: Male
  125. Name: el-GR-AthinaNeural
  126. Gender: Female
  127. Name: el-GR-NestorasNeural
  128. Gender: Male
  129. Name: en-AU-NatashaNeural
  130. Gender: Female
  131. Name: en-AU-WilliamNeural
  132. Gender: Male
  133. Name: en-CA-ClaraNeural
  134. Gender: Female
  135. Name: en-CA-LiamNeural
  136. Gender: Male
  137. Name: en-GB-LibbyNeural
  138. Gender: Female
  139. Name: en-GB-MaisieNeural
  140. Gender: Female
  141. Name: en-GB-RyanNeural
  142. Gender: Male
  143. Name: en-GB-SoniaNeural
  144. Gender: Female
  145. Name: en-GB-ThomasNeural
  146. Gender: Male
  147. Name: en-HK-SamNeural
  148. Gender: Male
  149. Name: en-HK-YanNeural
  150. Gender: Female
  151. Name: en-IE-ConnorNeural
  152. Gender: Male
  153. Name: en-IE-EmilyNeural
  154. Gender: Female
  155. Name: en-IN-NeerjaExpressiveNeural
  156. Gender: Female
  157. Name: en-IN-NeerjaNeural
  158. Gender: Female
  159. Name: en-IN-PrabhatNeural
  160. Gender: Male
  161. Name: en-KE-AsiliaNeural
  162. Gender: Female
  163. Name: en-KE-ChilembaNeural
  164. Gender: Male
  165. Name: en-NG-AbeoNeural
  166. Gender: Male
  167. Name: en-NG-EzinneNeural
  168. Gender: Female
  169. Name: en-NZ-MitchellNeural
  170. Gender: Male
  171. Name: en-NZ-MollyNeural
  172. Gender: Female
  173. Name: en-PH-JamesNeural
  174. Gender: Male
  175. Name: en-PH-RosaNeural
  176. Gender: Female
  177. Name: en-SG-LunaNeural
  178. Gender: Female
  179. Name: en-SG-WayneNeural
  180. Gender: Male
  181. Name: en-TZ-ElimuNeural
  182. Gender: Male
  183. Name: en-TZ-ImaniNeural
  184. Gender: Female
  185. Name: en-US-AnaNeural
  186. Gender: Female
  187. Name: en-US-AriaNeural
  188. Gender: Female
  189. Name: en-US-ChristopherNeural
  190. Gender: Male
  191. Name: en-US-EricNeural
  192. Gender: Male
  193. Name: en-US-GuyNeural
  194. Gender: Male
  195. Name: en-US-JennyNeural
  196. Gender: Female
  197. Name: en-US-MichelleNeural
  198. Gender: Female
  199. Name: en-US-RogerNeural
  200. Gender: Male
  201. Name: en-US-SteffanNeural
  202. Gender: Male
  203. Name: en-ZA-LeahNeural
  204. Gender: Female
  205. Name: en-ZA-LukeNeural
  206. Gender: Male
  207. Name: es-AR-ElenaNeural
  208. Gender: Female
  209. Name: es-AR-TomasNeural
  210. Gender: Male
  211. Name: es-BO-MarceloNeural
  212. Gender: Male
  213. Name: es-BO-SofiaNeural
  214. Gender: Female
  215. Name: es-CL-CatalinaNeural
  216. Gender: Female
  217. Name: es-CL-LorenzoNeural
  218. Gender: Male
  219. Name: es-CO-GonzaloNeural
  220. Gender: Male
  221. Name: es-CO-SalomeNeural
  222. Gender: Female
  223. Name: es-CR-JuanNeural
  224. Gender: Male
  225. Name: es-CR-MariaNeural
  226. Gender: Female
  227. Name: es-CU-BelkysNeural
  228. Gender: Female
  229. Name: es-CU-ManuelNeural
  230. Gender: Male
  231. Name: es-DO-EmilioNeural
  232. Gender: Male
  233. Name: es-DO-RamonaNeural
  234. Gender: Female
  235. Name: es-EC-AndreaNeural
  236. Gender: Female
  237. Name: es-EC-LuisNeural
  238. Gender: Male
  239. Name: es-ES-AlvaroNeural
  240. Gender: Male
  241. Name: es-ES-ElviraNeural
  242. Gender: Female
  243. Name: es-ES-ManuelEsCUNeural
  244. Gender: Male
  245. Name: es-GQ-JavierNeural
  246. Gender: Male
  247. Name: es-GQ-TeresaNeural
  248. Gender: Female
  249. Name: es-GT-AndresNeural
  250. Gender: Male
  251. Name: es-GT-MartaNeural
  252. Gender: Female
  253. Name: es-HN-CarlosNeural
  254. Gender: Male
  255. Name: es-HN-KarlaNeural
  256. Gender: Female
  257. Name: es-MX-DaliaNeural
  258. Gender: Female
  259. Name: es-MX-JorgeNeural
  260. Gender: Male
  261. Name: es-MX-LorenzoEsCLNeural
  262. Gender: Male
  263. Name: es-NI-FedericoNeural
  264. Gender: Male
  265. Name: es-NI-YolandaNeural
  266. Gender: Female
  267. Name: es-PA-MargaritaNeural
  268. Gender: Female
  269. Name: es-PA-RobertoNeural
  270. Gender: Male
  271. Name: es-PE-AlexNeural
  272. Gender: Male
  273. Name: es-PE-CamilaNeural
  274. Gender: Female
  275. Name: es-PR-KarinaNeural
  276. Gender: Female
  277. Name: es-PR-VictorNeural
  278. Gender: Male
  279. Name: es-PY-MarioNeural
  280. Gender: Male
  281. Name: es-PY-TaniaNeural
  282. Gender: Female
  283. Name: es-SV-LorenaNeural
  284. Gender: Female
  285. Name: es-SV-RodrigoNeural
  286. Gender: Male
  287. Name: es-US-AlonsoNeural
  288. Gender: Male
  289. Name: es-US-PalomaNeural
  290. Gender: Female
  291. Name: es-UY-MateoNeural
  292. Gender: Male
  293. Name: es-UY-ValentinaNeural
  294. Gender: Female
  295. Name: es-VE-PaolaNeural
  296. Gender: Female
  297. Name: es-VE-SebastianNeural
  298. Gender: Male
  299. Name: et-EE-AnuNeural
  300. Gender: Female
  301. Name: et-EE-KertNeural
  302. Gender: Male
  303. Name: fa-IR-DilaraNeural
  304. Gender: Female
  305. Name: fa-IR-FaridNeural
  306. Gender: Male
  307. Name: fi-FI-HarriNeural
  308. Gender: Male
  309. Name: fi-FI-NooraNeural
  310. Gender: Female
  311. Name: fil-PH-AngeloNeural
  312. Gender: Male
  313. Name: fil-PH-BlessicaNeural
  314. Gender: Female
  315. Name: fr-BE-CharlineNeural
  316. Gender: Female
  317. Name: fr-BE-GerardNeural
  318. Gender: Male
  319. Name: fr-CA-AntoineNeural
  320. Gender: Male
  321. Name: fr-CA-JeanNeural
  322. Gender: Male
  323. Name: fr-CA-SylvieNeural
  324. Gender: Female
  325. Name: fr-CH-ArianeNeural
  326. Gender: Female
  327. Name: fr-CH-FabriceNeural
  328. Gender: Male
  329. Name: fr-FR-DeniseNeural
  330. Gender: Female
  331. Name: fr-FR-EloiseNeural
  332. Gender: Female
  333. Name: fr-FR-HenriNeural
  334. Gender: Male
  335. Name: ga-IE-ColmNeural
  336. Gender: Male
  337. Name: ga-IE-OrlaNeural
  338. Gender: Female
  339. Name: gl-ES-RoiNeural
  340. Gender: Male
  341. Name: gl-ES-SabelaNeural
  342. Gender: Female
  343. Name: gu-IN-DhwaniNeural
  344. Gender: Female
  345. Name: gu-IN-NiranjanNeural
  346. Gender: Male
  347. Name: he-IL-AvriNeural
  348. Gender: Male
  349. Name: he-IL-HilaNeural
  350. Gender: Female
  351. Name: hi-IN-MadhurNeural
  352. Gender: Male
  353. Name: hi-IN-SwaraNeural
  354. Gender: Female
  355. Name: hr-HR-GabrijelaNeural
  356. Gender: Female
  357. Name: hr-HR-SreckoNeural
  358. Gender: Male
  359. Name: hu-HU-NoemiNeural
  360. Gender: Female
  361. Name: hu-HU-TamasNeural
  362. Gender: Male
  363. Name: id-ID-ArdiNeural
  364. Gender: Male
  365. Name: id-ID-GadisNeural
  366. Gender: Female
  367. Name: is-IS-GudrunNeural
  368. Gender: Female
  369. Name: is-IS-GunnarNeural
  370. Gender: Male
  371. Name: it-IT-DiegoNeural
  372. Gender: Male
  373. Name: it-IT-ElsaNeural
  374. Gender: Female
  375. Name: it-IT-IsabellaNeural
  376. Gender: Female
  377. Name: ja-JP-KeitaNeural
  378. Gender: Male
  379. Name: ja-JP-NanamiNeural
  380. Gender: Female
  381. Name: jv-ID-DimasNeural
  382. Gender: Male
  383. Name: jv-ID-SitiNeural
  384. Gender: Female
  385. Name: ka-GE-EkaNeural
  386. Gender: Female
  387. Name: ka-GE-GiorgiNeural
  388. Gender: Male
  389. Name: kk-KZ-AigulNeural
  390. Gender: Female
  391. Name: kk-KZ-DauletNeural
  392. Gender: Male
  393. Name: km-KH-PisethNeural
  394. Gender: Male
  395. Name: km-KH-SreymomNeural
  396. Gender: Female
  397. Name: kn-IN-GaganNeural
  398. Gender: Male
  399. Name: kn-IN-SapnaNeural
  400. Gender: Female
  401. Name: ko-KR-InJoonNeural
  402. Gender: Male
  403. Name: ko-KR-SunHiNeural
  404. Gender: Female
  405. Name: lo-LA-ChanthavongNeural
  406. Gender: Male
  407. Name: lo-LA-KeomanyNeural
  408. Gender: Female
  409. Name: lt-LT-LeonasNeural
  410. Gender: Male
  411. Name: lt-LT-OnaNeural
  412. Gender: Female
  413. Name: lv-LV-EveritaNeural
  414. Gender: Female
  415. Name: lv-LV-NilsNeural
  416. Gender: Male
  417. Name: mk-MK-AleksandarNeural
  418. Gender: Male
  419. Name: mk-MK-MarijaNeural
  420. Gender: Female
  421. Name: ml-IN-MidhunNeural
  422. Gender: Male
  423. Name: ml-IN-SobhanaNeural
  424. Gender: Female
  425. Name: mn-MN-BataaNeural
  426. Gender: Male
  427. Name: mn-MN-YesuiNeural
  428. Gender: Female
  429. Name: mr-IN-AarohiNeural
  430. Gender: Female
  431. Name: mr-IN-ManoharNeural
  432. Gender: Male
  433. Name: ms-MY-OsmanNeural
  434. Gender: Male
  435. Name: ms-MY-YasminNeural
  436. Gender: Female
  437. Name: mt-MT-GraceNeural
  438. Gender: Female
  439. Name: mt-MT-JosephNeural
  440. Gender: Male
  441. Name: my-MM-NilarNeural
  442. Gender: Female
  443. Name: my-MM-ThihaNeural
  444. Gender: Male
  445. Name: nb-NO-FinnNeural
  446. Gender: Male
  447. Name: nb-NO-PernilleNeural
  448. Gender: Female
  449. Name: ne-NP-HemkalaNeural
  450. Gender: Female
  451. Name: ne-NP-SagarNeural
  452. Gender: Male
  453. Name: nl-BE-ArnaudNeural
  454. Gender: Male
  455. Name: nl-BE-DenaNeural
  456. Gender: Female
  457. Name: nl-NL-ColetteNeural
  458. Gender: Female
  459. Name: nl-NL-FennaNeural
  460. Gender: Female
  461. Name: nl-NL-MaartenNeural
  462. Gender: Male
  463. Name: pl-PL-MarekNeural
  464. Gender: Male
  465. Name: pl-PL-ZofiaNeural
  466. Gender: Female
  467. Name: ps-AF-GulNawazNeural
  468. Gender: Male
  469. Name: ps-AF-LatifaNeural
  470. Gender: Female
  471. Name: pt-BR-AntonioNeural
  472. Gender: Male
  473. Name: pt-BR-FranciscaNeural
  474. Gender: Female
  475. Name: pt-PT-DuarteNeural
  476. Gender: Male
  477. Name: pt-PT-RaquelNeural
  478. Gender: Female
  479. Name: ro-RO-AlinaNeural
  480. Gender: Female
  481. Name: ro-RO-EmilNeural
  482. Gender: Male
  483. Name: ru-RU-DmitryNeural
  484. Gender: Male
  485. Name: ru-RU-SvetlanaNeural
  486. Gender: Female
  487. Name: si-LK-SameeraNeural
  488. Gender: Male
  489. Name: si-LK-ThiliniNeural
  490. Gender: Female
  491. Name: sk-SK-LukasNeural
  492. Gender: Male
  493. Name: sk-SK-ViktoriaNeural
  494. Gender: Female
  495. Name: sl-SI-PetraNeural
  496. Gender: Female
  497. Name: sl-SI-RokNeural
  498. Gender: Male
  499. Name: so-SO-MuuseNeural
  500. Gender: Male
  501. Name: so-SO-UbaxNeural
  502. Gender: Female
  503. Name: sq-AL-AnilaNeural
  504. Gender: Female
  505. Name: sq-AL-IlirNeural
  506. Gender: Male
  507. Name: sr-RS-NicholasNeural
  508. Gender: Male
  509. Name: sr-RS-SophieNeural
  510. Gender: Female
  511. Name: su-ID-JajangNeural
  512. Gender: Male
  513. Name: su-ID-TutiNeural
  514. Gender: Female
  515. Name: sv-SE-MattiasNeural
  516. Gender: Male
  517. Name: sv-SE-SofieNeural
  518. Gender: Female
  519. Name: sw-KE-RafikiNeural
  520. Gender: Male
  521. Name: sw-KE-ZuriNeural
  522. Gender: Female
  523. Name: sw-TZ-DaudiNeural
  524. Gender: Male
  525. Name: sw-TZ-RehemaNeural
  526. Gender: Female
  527. Name: ta-IN-PallaviNeural
  528. Gender: Female
  529. Name: ta-IN-ValluvarNeural
  530. Gender: Male
  531. Name: ta-LK-KumarNeural
  532. Gender: Male
  533. Name: ta-LK-SaranyaNeural
  534. Gender: Female
  535. Name: ta-MY-KaniNeural
  536. Gender: Female
  537. Name: ta-MY-SuryaNeural
  538. Gender: Male
  539. Name: ta-SG-AnbuNeural
  540. Gender: Male
  541. Name: ta-SG-VenbaNeural
  542. Gender: Female
  543. Name: te-IN-MohanNeural
  544. Gender: Male
  545. Name: te-IN-ShrutiNeural
  546. Gender: Female
  547. Name: th-TH-NiwatNeural
  548. Gender: Male
  549. Name: th-TH-PremwadeeNeural
  550. Gender: Female
  551. Name: tr-TR-AhmetNeural
  552. Gender: Male
  553. Name: tr-TR-EmelNeural
  554. Gender: Female
  555. Name: uk-UA-OstapNeural
  556. Gender: Male
  557. Name: uk-UA-PolinaNeural
  558. Gender: Female
  559. Name: ur-IN-GulNeural
  560. Gender: Female
  561. Name: ur-IN-SalmanNeural
  562. Gender: Male
  563. Name: ur-PK-AsadNeural
  564. Gender: Male
  565. Name: ur-PK-UzmaNeural
  566. Gender: Female
  567. Name: uz-UZ-MadinaNeural
  568. Gender: Female
  569. Name: uz-UZ-SardorNeural
  570. Gender: Male
  571. Name: vi-VN-HoaiMyNeural
  572. Gender: Female
  573. Name: vi-VN-NamMinhNeural
  574. Gender: Male
  575. Name: zh-CN-XiaoxiaoNeural
  576. Gender: Female
  577. Name: zh-CN-XiaoyiNeural
  578. Gender: Female
  579. Name: zh-CN-YunjianNeural
  580. Gender: Male
  581. Name: zh-CN-YunxiNeural
  582. Gender: Male
  583. Name: zh-CN-YunxiaNeural
  584. Gender: Male
  585. Name: zh-CN-YunyangNeural
  586. Gender: Male
  587. Name: zh-CN-liaoning-XiaobeiNeural
  588. Gender: Female
  589. Name: zh-CN-shaanxi-XiaoniNeural
  590. Gender: Female
  591. Name: zh-HK-HiuGaaiNeural
  592. Gender: Female
  593. Name: zh-HK-HiuMaanNeural
  594. Gender: Female
  595. Name: zh-HK-WanLungNeural
  596. Gender: Male
  597. Name: zh-TW-HsiaoChenNeural
  598. Gender: Female
  599. Name: zh-TW-HsiaoYuNeural
  600. Gender: Female
  601. Name: zh-TW-YunJheNeural
  602. Gender: Male
  603. Name: zu-ZA-ThandoNeural
  604. Gender: Female
  605. Name: zu-ZA-ThembaNeural
  606. Gender: Male

一望而知,几乎支持所有主流的通用语,Gender字段为合成语音的性别,Male代表男性,Female代表女性,zh开头的就是中文语音角色,这里以微软的小伊为例子:

  1. edge-tts --voice zh-CN-XiaoyiNeural --text "你好啊,我是智能语音助手" --write-media hello_in_cn.mp3

该命令含义是通过zh-CN-XiaoyiNeural角色合成语音:"你好啊,我是智能语音助手"的内容,随后将音频流写入hello_in_cn.mp3文件。

程序返回:

  1. Downloads edge-tts --voice zh-CN-XiaoyiNeural --text "你好啊,我是智能语音助手" --write-media hello_in_cn.mp3
  2. WEBVTT
  3. 00:00:00.100 --> 00:00:00.525
  4. 你好
  5. 00:00:00.525 --> 00:00:00.912
  6. 00:00:01.050 --> 00:00:01.238
  7. 00:00:01.238 --> 00:00:01.375
  8. 00:00:01.387 --> 00:00:01.700
  9. 智能
  10. 00:00:01.700 --> 00:00:02.050
  11. 语音
  12. 00:00:02.062 --> 00:00:02.550
  13. 助手

程序会自动将时间轴和语音文本匹配输出,如此一来,连字幕文件也有了,可谓是一举两得,一箭双雕。

与此同时,我们也可以调整合成语音的语速:

  1. edge-tts --rate=-50% --voice zh-CN-XiaoyiNeural --text "你好啊,我是智能语音助手" --write-media hello_in_cn.mp3

--rate参数可以通过加号或者减号同步加快或者减慢合成语音的语速。

亦或者,调整合成语音的音量:

  1. edge-tts --volume=-50% --voice zh-CN-XiaoyiNeural --text "你好啊,我是智能语音助手" --write-media hello_in_cn.mp3

--volume参数可以调整语音的音量。

遗憾的是,和微软Azure官方的语音合成库相比,开源的语音合成库并不支持基于标记语言 (SSML)的语音调优,比如语调、情绪的调整,但这毕竟是免费的,要求也不能太高了。

Python脚本语音合成

除了通过命令进行语音合成,edge-tts也支持在Python脚本,编辑test.py文件:

  1. import asyncio
  2. import edge_tts
  3. TEXT = "你好哟,我是智能语音助手,小伊"
  4. VOICE = "zh-CN-XiaoyiNeural"
  5. OUTPUT_FILE = "/Users/liuyue/Downloads/test.mp3"
  6. async def _main() -> None:
  7. communicate = edge_tts.Communicate(TEXT, VOICE)
  8. await communicate.save(OUTPUT_FILE)
  9. if __name__ == "__main__":
  10. asyncio.run(_main())

这里我们直接通过异步模式调用communicate实例的save方法,就可以并发异步生成语音合成的音频文件,非常方便。

也可以通过语音管理库来自动寻找我们需要的语言:

  1. import asyncio
  2. import random
  3. import edge_tts
  4. from edge_tts import VoicesManager
  5. TEXT = "中文语音测试"
  6. OUTPUT_FILE ="china.mp3"
  7. async def _main() -> None:
  8. voices = await VoicesManager.create()
  9. voice = voices.find(Gender="Female", Language="zh")
  10. communicate = edge_tts.Communicate(TEXT, random.choice(voice)["Name"])
  11. await communicate.save(OUTPUT_FILE)
  12. if __name__ == "__main__":
  13. asyncio.run(_main())

这里通过内置的VoicesManager库来随机挑选中文语音角色完成语音合成操作。

除此之外,也可以通过脚本将语音流和字母同步进行生成:

  1. import asyncio
  2. import edge_tts
  3. TEXT = "这里是语音流测试"
  4. VOICE = "zh-CN-XiaoyiNeural"
  5. OUTPUT_FILE = "test.mp3"
  6. WEBVTT_FILE = "test.vtt"
  7. async def _main() -> None:
  8. communicate = edge_tts.Communicate(TEXT, VOICE)
  9. submaker = edge_tts.SubMaker()
  10. with open(OUTPUT_FILE, "wb") as file:
  11. async for chunk in communicate.stream():
  12. if chunk["type"] == "audio":
  13. file.write(chunk["data"])
  14. elif chunk["type"] == "WordBoundary":
  15. submaker.create_sub((chunk["offset"], chunk["duration"]), chunk["text"])
  16. with open(WEBVTT_FILE, "w", encoding="utf-8") as file:
  17. file.write(submaker.generate_subs())
  18. if __name__ == "__main__":
  19. asyncio.run(_main())

这里异步调用之后,音频会写入test.mp3,而字幕文件则会写入test.vtt。后续则可以通过ffmpeg将生成的字幕文件叠加到视频中即可,请参见:基于Python3(Autosub)以及Ffmpeg配合GoogleTranslation(谷歌翻译)为你的影片实现双语版字幕(逐字稿)

结语

开源语音合成edge-tts库可以提高语音合成效率,并且极大地降低了语音合成门槛,为自动化视频剪辑铺平了道路,未来结合基于Stable-Diffusion算法的AI绘图框架,人工智能AI一键式绘制、配音、上字幕的一条龙服务指日可待。

原文链接:https://www.cnblogs.com/v3ucn/p/17186731.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号