python小工具-使用百度语音接口进行划字朗读

需求

1.最近看pdf文档以及一些文本文档,不想看,想着文档自己能说话把自己的内容读出来就行了
省的我还得看,我就闭着眼听文档自己读
2.怎么触发这个功能?快捷键,或者鼠标手势

就这样,鼠标划一下,自动激活
为什么鼠标划的图案设置成w呢?我觉得他像声音的波形,比较好记,
这样的话当我选择了文字,然后鼠标划出这个图案,文字就能自动朗读了
在这里插入图片描述

原理

1.首先选择文字段落,这个要开发的软件应该能够自动将这些文字内容复制进入剪切板,实现"Ctrl C"功能
2.这个软件应该读出剪切板的文字,并将这些文字送入百度的文字转语音接口,得到回传的语音
3.播放得到的语音
4.使用mouseinc鼠标手势软件,为这个软件设置快捷键,然后使用鼠标手势触发
给这个要开发的小软件设置的快捷键是Ctrl Shift Alt L,就怕有重复的快捷键,使劲复杂着设置
在这里插入图片描述

需求升级

有些文字无法复制,能否截图识别,实现ocr功能,自动识别出图片的文字然后自动朗读

呵呵,这个是伪需求,因为我的pdf文档的文字可以复制,我i暂时够用,这个升级的需求就不要了,等看的文档文字不能复制再升级功能吧

实现

import pyperclip
from aip import AipSpeech  # 这是百度的aip包,
import pygame
from mutagen.mp3 import MP3
import time
import os
global flag_last_music_name
flag_last_music_name = 0
# # 复制到粘贴板
# pyperclip.copy('牛顿')
# 从粘贴板读出
spam = pyperclip.paste()
print(spam)
basic_path = r"C:\Users\Administrator.DESKTOP-KMH7HN6\AppData\Local\Temp\python_pgm\my_voice_brain\mymusic"
def play_sentence(myword):
    global flag_last_music_name
    flag_last_music_name = flag_last_music_name + 1
    if myword:
        lan = myword
        APP_ID = ''  # 引号之间填写之前在ai平台上获得的参数,百度语音接口密钥,免费的,自己去百度的开发者平台注册
        API_KEY = ''  # 如上
        SECRET_KEY = ' '  # 如上
        client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
        result = client.synthesis(lan, 'zh', 1, {'vol': 10, 'per': 1, 'spd': 3, 'pit': 5})
        '''
        固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh
        客户端类型选择,web端填写固定值1
        spd语速,取值0-15,默认为5中语速(选填)
        pit音调,取值0-15,默认为5中语调(选填)
        vol音量,取值0-15,默认为5中音量(选填)
        per发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
        '''
        # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
        name_music = str(flag_last_music_name)
        last_name_music = str(flag_last_music_name - 1)
        path = basic_path + '\%s.mp3' % (name_music)
        last_path = basic_path + '\%s.mp3' % (last_name_music)
        if not isinstance(result, dict):
            with open(path, 'wb') as f:
                f.write(result)
        pc_play_music(path)
        if (flag_last_music_name > 2):
            try:
                os.remove(last_path)
            except:
                print("没有发现应该删除的音频")#语音文件播放后删除,不留着,播放后就没用了
        # 我的意思是音乐播放完就删除,要不然一直生成语音文件,谁受得了
def pc_play_music(n):
    global flag_play_command
    flag_play_command = 0
    print("开始播放音乐")
    audio = MP3(n)
    pygame.mixer.init()
    path = n
    pygame.mixer.music.load(path)
    pygame.mixer.music.play()
    for i in range(0, int(audio.info.length) + 2):
        if i == int(audio.info.length) or flag_play_command == 1:  # 表示有应用请求音频或者已经播放完
            pygame.mixer.music.stop()
            pygame.quit()
            flag_play_command = 0
            break
        else:
            time.sleep(1)
    print("播放完成")
play_sentence(spam)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值