V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
woshichuanqilz
V2EX  ›  Python

求助 pywintypes.com_error: (-2147221005, '无效的类字符串'... 问题

  •  
  •   woshichuanqilz · 2019-06-28 00:21:17 +08:00 · 6333 次点击
    这是一个创建于 2012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. https://github.com/nateshmbhat/pyttsx3/issues/32
    2. https://bbs.csdn.net/topics/392378574
    3. https://blog.csdn.net/bamuta/article/details/44460187
    4. https://segmentfault.com/q/1010000014342682
    5. https://www.cnblogs.com/jiangzhaowei/p/6815958.html 参考了这五个连接 python 32bit 64bit 都不行

    安装了 : Speech SDK 5.1

    pytts3 pywin32 安装了

    python 代码就是简单的一个 tts 调用, 应该是环境的问题。。。但是不知道怎么办了, speech sdk3 找不到下载

    # -*- coding: utf-8 -*-
    import pythoncom
    from win32com import client
     
    pythoncom.CoInitialize()
    engine=client.Dispatch("SAPI.SpVoice")
    engine.Speak('hello world')
    
    

    报错如下:

    
    
    $ C:\Python36-32\python.exe test.py
    Traceback (most recent call last):
      File "C:\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
        IDispatch = pythoncom.connect(IDispatch)
    pywintypes.com_error: (-2147221005, '无效的类字符串',
    None, None)
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
      File "test.py", line 5, in <module>
        engine=client.Dispatch("SAPI.SpVoice")
      File "C:\Python36-32\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
        dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
      File "C:\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
        return (_GetGoodDispatch(IDispatch, clsctx), userName)
      File "C:\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
        IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
    pywintypes.com_error: (-2147221005, '无效的类字符串',
    None, None)
    
    5 条回复    2019-06-28 15:33:55 +08:00
    geelaw
        1
    geelaw  
       2019-06-28 05:36:01 +08:00 via iPhone
    说明 SAPI.SpVoice 这个 ProgID 没有注册
    1462326016
        2
    1462326016  
       2019-06-28 08:56:34 +08:00
    亲测 Python3.6.7 32 位,网上下载了 dll 文件,然后注册了 dll,复制你的代码完美运行。
    没有安装你提供的那个 sdk,没有安装你的 pytts3,完美运行,你可以参考下,是不是你安装的版本什么的不对。
    woshichuanqilz
        3
    woshichuanqilz  
    OP
       2019-06-28 10:38:12 +08:00
    @1462326016 你下载的那个 dll?
    1462326016
        4
    1462326016  
       2019-06-28 11:53:49 +08:00
    @woshichuanqilz 我直接百度了一个,SAPI.SpVoice 以这个为关键字搜索的一个 zip 文件,然后注册了直接就可以调用了
    woshichuanqilz
        5
    woshichuanqilz  
    OP
       2019-06-28 15:33:55 +08:00
    @1462326016 谢谢了 大概率是我的系统是精简版被阉割了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:39 · PVG 03:39 · LAX 11:39 · JFK 14:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.