python 语音播报-win 和Linux的区别在于汉语

 

 

注意:语音播报的时候,其他程序暂停,只有播报完成了才继续执行下面的程序,要解决这个可能就需要多线程了

 

windows 下可以说汉语

anaconda自带下列的包

import pythoncom
from win32com import client

pythoncom.CoInitialize()
engine = client.Dispatch("SAPI.SpVoice")
engine.Speak('高才师兄 好帅')

 

Ubuntu下 中文声音很古怪,老外说的

 

# coding:utf-8
import sys

# 下面这两行语句不太清楚是什么,但是没有这两个,就无法播报中文,但是可以播报英文
reload(sys)
sys.setdefaultencoding('utf8')

import pyttsx

engine = pyttsx.init()
voices = engine.getProperty('voices')
for item in voices:
    # 打印
    print item.id,item.languages
engine.setProperty('voice', 'zh')  # 设置中文播报,同时英文也好使
# engine.say('hello world')
# engine.say(u'前方五百米左转,敌人将五分钟后到达战场')
engine.say(u'中船航海公司您好您好,大连海事大学您好您好!')
engine.runAndWait()
# 朗读一次
# engine.endLoop()

变成类的形式-Python2 Python3是pyttsx3这个包

# coding:utf-8
import sys

# 下面这两行语句不太清楚是什么,但是没有这两个,就无法播报中文,但是可以播报英文
reload(sys)
sys.setdefaultencoding('utf8')

import pyttsx

class Voice(object):
    def __init__(self):
        self.engine = pyttsx.init()
        # voices = self.engine.getProperty('voices')
        self.engine.setProperty('voice', 'zh')

    def say(self,s):
        self.engine.say(s)
        self.engine.runAndWait()

if __name__ == '__main__':
    engine=Voice()
    engine.say('中船航海公司您好您好,大连海事大学您好您好!')

 

多线程类形式

# coding:utf-8
import threading
import time

class Voice(threading.Thread):

    def __init__(self):
        super(Voice, self).__init__()
        import sys
        reload(sys)
        sys.setdefaultencoding('utf8')
        import pyttsx
        self.engine = pyttsx.init()
        # voices = self.engine.getProperty('voices')
        self.engine.setProperty('voice', 'zh')

    def setmassage(self,s):
        self.s = s

    def run(self):
        self.engine.say(self.s)
        self.engine.runAndWait()

if __name__ == '__main__':
    engine=Voice()
    engine.setmassage('中船航海公司您好您好,大连海事大学您好您好!')
    engine.start()
    # engine.say('中船航海公司您好您好,大连海事大学您好您好!')
    for i in range(10):
        time.sleep(0.1)
        print 'aassf'

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值