Pythonリーダー、テキストから音声へ----新しいスキルを習得しましたか

 テキストからスピーチ----新しいスキルを習得しましたか

私は小説を読むのが好きです、理由はわかりません、それは謎です(私は謎の男なので、ハハ)、それを見るとまぶたが戦っているのを感じます、そして突然、誰かがそれを読むことができればと思います(ここでは明らかに、エディターが世界から脱線していると感じています)、自動読み取りソフトウェアを作成してから、音声読み取りアーティファクトを作成することをお勧めします。

01-テキストからスピーチ

 

この前に、speech-to-textについて説明しましたが、text-to-speechに関する記事では、今日、text-to-speechの具体的な実装について説明します。

まず、材料を準備しましょう:

1.テキストの文字列を準備します

さて、これ以上はありません。

 

 

02-プログラミングのアイデア

それからアイデアがあります。私たちは自分たちが何をしているのかを非常に明確にする必要があります。同じ言葉をいつでも使用できます。

分析:テキストを音声に変換する必要があります。何が必要か、どのように行うか、何を変換するかです。

少し調べてみると、簡単な解決策が見つかりました。

アイデア分析:最初にサードパーティのインターフェイスなどを呼び出し、テキストを音声に変換してから再生しますが、それだけでは不十分です。

 

 

03

開始---テキストからスピーチ

それから始めましょう。まず、ある程度のapiを呼び出してから、彼に声を渡してもらいます。ここでは、バイドゥヤヤの声を使ってみましょう!

 

特定のコードを見てください:

import sys
import json
import webbrowser
import os
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
API_KEY = '4E1BG9lTnlSeIf1NQFlrSq6h'
SECRET_KEY = '544ca4657ba8002e3dea3ac2f5fdd241'
# 发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
PER = 4
# 语速,取值0-15,默认为5中语速
SPD = 5
# 音调,取值0-15,默认为5中语调
PIT = 5
# 音量,取值0-9,默认为5中音量
VOL = 5
# 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wav
AUE = 3
FORMATS = {3: "mp3", 4: "pcm", 5: "pcm", 6: "wav"}
FORMAT = FORMATS[AUE]
CUID = "123456PYTHON"
TTS_URL = 'http://tsn.baidu.com/text2audio'
class DemoError(Exception):
    pass
"""  TOKEN start """
TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'
SCOPE = 'audio_tts_post'  # 有此scope表示有tts能力,没有请在网页里勾选
def fetch_token():
    params = {'grant_type': 'client_credentials',
              'client_id': API_KEY,
              'client_secret': SECRET_KEY}
    post_data = urlencode(params)
    if (IS_PY3):
        post_data = post_data.encode('utf-8')
    req = Request(TOKEN_URL, post_data)
    try:
        f = urlopen(req, timeout=5)
        result_str = f.read()
    except URLError as err:
        result_str = err.read()
    if (IS_PY3):
        result_str = result_str.decode()
    result = json.loads(result_str)
    if ('access_token' in result.keys() and 'scope' in result.keys()):
        if not SCOPE in result['scope'].split(' '):
            raise DemoError('scope is not correct')
        return result['access_token']
    else:
        raise DemoError('MAYBE API_KEY or SECRET_KEY not correct: access_token or scope not found in token response')


"""  TOKEN end """
def test(TEXT):
    token = fetch_token()
    tex = quote_plus(TEXT)  # 此处TEXT需要两次urlencode
    params = {'tok': token, 'tex': tex, 'per': PER, 'spd': SPD, 'pit': PIT, 'vol': VOL, 'aue': AUE, 'cuid': CUID,
              'lan': 'zh', 'ctp': 1}  # lan ctp 固定参数
    data = urlencode(params)
    req = Request(TTS_URL, data.encode('utf-8'))
    has_error = False
    try:
        f = urlopen(req)
        result_str = f.read()
        headers = dict((name.lower(), value) for name, value in f.headers.items())
        has_error = ('content-type' not in headers.keys() or headers['content-type'].find('audio/') < 0)
    except  URLError as err:
        result_str = err.read()
        has_error = True
    save_file = "error.txt" if has_error else '语音.' + FORMAT
    with open(save_file, 'wb') as of:
        of.write(result_str)

    if has_error:
        if (IS_PY3):
            result_str = str(result_str, 'utf-8')
    webbrowser.open(os.path.abspath(save_file))

 

この時点で、text-to-speechは正常に解決されました。次に、それをより美しくするために最適化を行います。

 

04

インターフェイスの最適化を追加

 

彼にインターフェースを追加して最適化し、彼をより美しく見せましょう。コードは次のとおりです。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import tkinter
from tkinter import *
from baidu_ai_world_say import test as read

def window():
    top = tkinter.Tk()
    top.title("语音转换器")
    # top.overrideredirect(True)  # 设置关闭窗口按钮是否显示
    top.geometry('500x500+10+10')
    lable1 = Label(top, text="语音合成器",  # 标签的文字
                   # bg='green',  # 背景颜色
                   font=('楷体', 17),  # 字体和字体大小
                   )
    lable1.grid(row=0, column=2)
    global text1
    text1 = Text(top, width=67, height=30)  # 原始数据录入框
    text1.grid(row=1, column=0, rowspan=1, columnspan=5)
    button = Button(top, text="开始阅读", bg="lightblue", width=10,command=text)
    button.grid(row=2, column=4)
    top.mainloop()
def text():
    wen=text1.get(1.0, END).strip().replace("\n", "").encode().decode()
    read(wen)

if __name__ == '__main__':
    window()

次に、以前のパッケージツールを覚えていますか?梱包してexeとして使用してください。ハハ!小説を読むことは、将来の読書の問題を簡単に解決することができます。

 

私たちに従うことを忘れないでください!

ソースコードとexeファイルを取得するための公式アカウント舞台裏返信「text-to-speech

 

関連する提案

新年が近づいています。新年の挨拶のポップアップウィンドウの全画面は素晴らしくて楽しいです。コンピュータがクラッシュしても、それでも幸せです。新年の挨拶のポップアップウィンドウをご覧ください。

 

ガールフレンドにテキストメッセージを自動的に送信する方法

 

独自のボイスチャットロボットを作成する

おすすめ

転載: blog.csdn.net/qq_39046854/article/details/90812479