当前位置:   article > 正文

Python 能说话吗?调用Windows系统自带语音合成_python调用语音

python调用语音

Python 语言能说话吗? 本文介绍Python如何调用系统自带的语音合成, 及生成语音wav文件的技巧。

目录

安装pythonnet库

调用系统语音合成

自定义语音音色

将语音合成到wav文件

安装pythonnet库

按Win+R键, 输入cmd, 再输入pip install pythonnet, 回车即可。 

(如果下载太慢, 可以升级pip, 因为新版的pip在国内默认使用国内的镜像源下载, 速度较快)

调用系统语音合成

System.Speech 这个.NET库包含了调用系统语音合成的函数和类, 其中SpeechSynthesizer()类用于合成语音, 包含以下方法:

  • Speak(string): 合成string对应的语音, 也就是朗读string。
  • SelectVoice(type): 选择不同的语音音色, 必须是系统中已有的。注意有时一种语音音色只能对应一种语言, 比如你选了英文的语音音色, 又Speak()中文, 就会读不出声音。

 以下是操作方法:

所需文件: pan.baidu.com/s/14NKEUSo11_yMTjpVOPJw_Q?pwd=ffjj

新建一个.py文件, 输入以下代码。然后, 将下载的System.Speech.dll放到.py文件所在的同一目录下, 即可。(另外这个dll的运行需要.net 4.0库。)

  1. import clr,ctypes
  2. clr.AddReference("System.Speech") # 需要调用System.Speech.dll
  3. from System.Speech.Synthesis import *
  4. speak = SpeechSynthesizer()
  5. speak.SelectVoice('Microsoft Zira Desktop')
  6. speak.Speak("Hello world")
  7. speak.SelectVoice('Microsoft Huihui Desktop')
  8. speak.Speak("中文")

自定义语音音色

前面介绍了SelectVoice()方法可以选择不同的语音音色。这些系统的音色在哪里?

使用SpeechSynthesizer对象的GetInstalledVoices()方法,可以获取所有已安装的音色,包含名称等信息。SelectVoice()方法传入的是音色的名称

  1. import clr,ctypes
  2. clr.AddReference("System.Speech") # 需要调用System.Speech.dll
  3. from System.Speech.Synthesis import *
  4. speak = SpeechSynthesizer()
  5. voices = speak.GetInstalledVoices() # 注: voices不是列表类型
  6. for v in voices:
  7. i = v.get_VoiceInfo()
  8. print("名称:",i.get_Name())
  9. print("年龄:",i.get_Age())
  10. print("性别:",i.get_Gender())
  11. print("文化:",i.get_Culture())
  12. print("描述:",i.get_Description())
  13. print("附加信息:",i.get_AdditionalInfo())
  14. print("ID:",i.get_Id())
  15. print("支持音频格式:",list(i.get_SupportedAudioFormats()))
  16. print()

运行结果(部分): 

  1. 名称: Microsoft Huihui Desktop
  2. 年龄: Adult
  3. 性别: Female
  4. 文化: zh-CN
  5. 描述: Microsoft Huihui Desktop - Chinese (Simplified)
  6. 附加信息: System.Collections.ObjectModel.ReadOnlyDictionary`2[System.String,System.String]
  7. ID: TTS_MS_ZH-CN_HUIHUI_11.0
  8. 支持音频格式: []

将语音合成到wav文件

 使用SpeechSynthesizer对象的SetOutputToWaveFile()SetOutputToDefaultAudioDevice()方法, 可以设置输出到电脑的声音, 还是输出到wav文件。利用这个功能, 可以方便地制作带语音的视频, 等等。

  1. import clr,ctypes
  2. clr.AddReference("System.Speech") # 需要调用System.Speech.dll
  3. from System.Speech.Synthesis import *
  4. speak = SpeechSynthesizer()
  5. speak.SelectVoice('Microsoft Zira Desktop')
  6. speak.SetOutputToWaveFile("输出.wav") # 可输出到wav文件
  7. speak.Speak("Hello world")
  8. speak.SelectVoice('Microsoft Huihui Desktop')
  9. speak.Speak("中文")
  10. speak.SetOutputToDefaultAudioDevice()
  11. speak.Speak("成功完成")

结果是生成了一个wav文件, 包含我们的输出。

总结,前面介绍了Python调用系统内置语音合成的方法。语音合成技术在实际生活中已具有广泛的应用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/201571
推荐阅读
相关标签
  

闽ICP备14008679号