pywebview 通过 JSBridge 调用 TTS

这篇具有很好参考价值的文章主要介绍了pywebview 通过 JSBridge 调用 TTS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pip install pywin32 ;

pip install pywebview ; 通过 JSBridge 调用本机 TTS

pip install cefpython3
cefpython3-66.1-py2.py3-none-win_amd64.whl (69.0 MB)
Successfully installed cefpython3-66.1

编写 pywebview_tts.py 如下

# -*- coding: utf-8 -*-
""" pywebview 和 http交互的例子 """
import os
import webview
import pygame
import win32com.client  # TTS
sapi = win32com.client.Dispatch("SAPI.SpVoice")

#pygame.init()
pygame.mixer.init()

os.chdir('/mdict/doc')

class Api:
    """ pywebview Api """
    def speak(self,txt):
        """ text TTS """
        if txt.strip() !='':
            sapi.Speak(txt)

    def mplay(self,filename):
        """播放.mp3"""
        if pygame.mixer.music.get_busy():
            print("mixer.music.get_busy")
            return 1
        if not os.path.exists(filename):
            print(f"{filename} not found.")
            return 2
        fn,ext = os.path.splitext(filename)
        if ext.lower() == '.mp3':
            pygame.mixer.music.load(filename)
            pygame.mixer.music.play()
        else:
            print(f"{filename} is not .mp3")
            return 3
        return 0


if __name__ == '__main__':
    api = Api()
    window = webview.create_window('JSBridge 调用TTS示例',
                            url="http://localhost:8888/", 
                            js_api=api, width=1000, height=800)
    webview.start(gui='cef', debug=True)

编写 index3.html 如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">   
    <title>查询英汉词典</title> 
    <script src="jquery-3.2.1.min.js"></script>
<style>
/* portrait 判断为竖屏 */
@media only screen and (orientation: portrait){
     #lab1 {display:none;}
} 
/* landscape 判断为横屏 */ 
@media only screen and (orientation: landscape){
     #lab1 {display: ;} 
}    
</style>
</head>
<body>
  <form name="form" id="form" action="trans" method="POST" target="iframe">
    <label id="lab1">请输入:</label>
    <input type="text" name="txt" id='txt' size="30" placeholder="请输入 a word">
    <input type="submit" name="eng_han" value="英译汉">
    <input type="button" name="btn1" id="btn1" value="前缀查询">
    <input type="button" name="btn2" id="btn2" value="TTS读音" onclick="tts2();">
  </form>
  <p></p>
<div style="float:left; width:100%;">
  <div id="result" style="float:left; width:80%; height:400; border:2px;">
    <iframe name="iframe" id="iframe" width="100%" height="400"> </iframe>
  </div>
  <div id="alist" style="float:right; width:20%; height:400; border:2px;">
  </div>
</div>
  
  <script type="text/javascript">
    $(function(){
      $("#btn1").click(function(){
        $.getJSON("/prefix?txt="+$("#txt").val(), function(data){
          var items = [];
          $.each(data, function(i, item){
            if (i<=20){
              items[i] = '<a href="/trans?txt=' +item+ '" target="iframe">' +item+ "</a><br>";
            }
          });
          var a = items.join('\n');
          if (a) $('#alist').html(a);
        })
      })
    });
    // pywebview
    window.addEventListener('pywebviewready', function(){
        console.log('pywebview is ready');
    })
    // TTS
    function tts() {
        var txt = document.getElementById('txt').value;
        if (txt.length >1) {
            pywebview.api.speak(txt).then((response)=>{
                console.log(response);
            });
        }
    }

    // 屏幕双击取词
    function tts2() {
        // 获取iframe里的选择内容
        var select = window.frames['iframe'].getSelection();
        var txt = select.toString();
        if (txt.length >1) { // alert(txt);
          var input = document.getElementById('txt');
          input.value = txt.trim();
          pywebview.api.speak(txt).then((response)=>{
            console.log(response);
          });       
        } else {
          tts();
        }
    }

  </script> 
</body>
</html>

web 服务程序参见:  python:mdict + bottle = web 查询英汉词典

记得:将其中 index.html 改为 index3.html

先运行 python mdict_bottle.py , 再运行 python pywebview_tts.py

pywebview 通过 JSBridge 调用 TTS,python,python,pywebview,cef,tts文章来源地址https://www.toymoban.com/news/detail-675065.html

到了这里,关于pywebview 通过 JSBridge 调用 TTS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • streamlit+pywebview,纯python以前后端形式写桌面应用

    VSCode VSCode扩展:Python 以管理员身份运行PowerShell,运行 Set-ExecutionPolicy RemoteSigned ,并输入Y,回车确认 只安装Python:华为镜像、阿里镜像、newbe、Python官网ftp地址、Python官网中文页面 Python嵌入版:Python3.11.3下载页面、Python3.11.3嵌入版下载直链、各个镜像的嵌入式压缩包 虚拟环

    2024年02月03日
    浏览(117)
  • Android 调用TTS语音引擎过程及问题记录

      背景是需要在华为平板上部署一个能够进行相关中文语音提示的APP,华为系统为鸿蒙3.0,对应Android API 12.   调用TTS引擎之前,首先要确认自己的设备中是否安装了相关的文本转语音引擎以及是否支持中文,查看方法为“设置-辅助功能-无障碍-文本转语音”,鸿蒙系统是

    2024年02月16日
    浏览(41)
  • Python使用pywebview开发桌面应用:打造现代化、跨平台的用户体验

    📚 个人网站:ipengtao.com 在当今科技快速发展的时代,为了提供更好的用户体验,许多应用程序都转向了桌面应用的开发。在Python领域, pywebview 是一款优秀的库,它使得用Web技术开发桌面应用变得轻而易举。本文将深入探讨如何使用 pywebview 创建现代化、跨平台的桌面应用,

    2024年02月04日
    浏览(63)
  • 通过python调用OpenAI的API

    一、需要注册OpenAI账号 这个网上很多教程,随便搜索一大片,只是需要科学上网。。。 二、 获取OpenAI的API密钥 登陆OpenAI的API地址:https://platform.openai.com/  创建API KEY, 创建好的key记得立刻复制出来 ,因为创建完成后无法再次查看   三、安装python安装包openai 安装openai安装包

    2024年02月01日
    浏览(65)
  • 通过python在unity里调用C#接口

    log: 背景 最近在做虚拟人底层驱动sdk测试,因为后端使用的是C#,我个人更倾向于python编程辅助测试工作,测试sdk需要通过开发提供的接口方法文档,通过传测试场景参数调用方法进行单元测试 技术工具 项目语言 C# 项目工具 unity 测试语言 python3 实现过程 1.首先需要在unity安装

    2024年02月04日
    浏览(34)
  • Python通过函数名调用函数的几种场景

    除了执行系统命令外,我们有时还需要动态地执行一些python代码,有经验的朋友就会知道可以使用内置函数eval实现这一需求,如 eval(\\\"print(__file__)\\\") ,这还是比较简单的。 但如果要动态执行一个函数,讲的资料就会少一点,这次就要看这个需求该如何实现。 1 通过eval调用同一

    2024年04月13日
    浏览(36)
  • Java:Java程序通过执行系统命令调用Python脚本

    本文实现功能:Java程序调用Python脚本 直接执行 参考视频 JAVA开发必会小技巧8——用代码调用系统指令

    2024年02月14日
    浏览(62)
  • Python--使用selenium通过chromedriver调用谷歌浏览器

    原文网址:Python--使用selenium通过chromedriver调用谷歌浏览器_IT利刃出鞘的博客-CSDN博客         本文用实例介绍Python如何使用selenium通过chromedriver调用谷歌浏览器。 谷歌浏览器访问:chrome://version/ 注意:通过【帮助= 关于Google Chrome 】这种方式来查看会导致谷歌浏览器自动更新

    2023年04月21日
    浏览(105)
  • [Python] 如何通过ctypes库来调用C++ 动态库 DLL?

    ctypes是Python的一个外部库,它提供了一种灵活的方式来调用C语言的动态链接库(DLL)或共享库(SO)。通过ctypes,我们可以在Python中直接调用 C语言编写的函数和变量 ,从而实现跨语言的互操作。 ctypes 它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模

    2024年01月19日
    浏览(38)
  • Python通过selenium调用IE11浏览器报错解决方法

    正常安装Python 工具,selenium 包可以正常导入。IE浏览器驱动 IEDriverServer.exe 已经正确放置到已经添加path目录的文件下。 报错现象: 打开浏览器进入 internet 选项 切换到安全页签 ,去除“应用保护模式” 再次调用验证: 没有报错,问题解决 https://github.com/SeleniumHQ/selenium/wiki

    2024年02月07日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包