


Verwenden Sie Python, um ein Sprachsynthesesystem zu erstellen
Text
Hallo zusammen, ich bin eine Python-Technologie für künstliche Intelligenz
Hintergrund
Ich habe mich schon immer für Sprachsynthesesysteme interessiert, ich möchte immer in der Lage sein, einige Inhalte für mich selbst zu synthetisieren, wie zum Beispiel synthetische Romane. und die E-Books, die ich heruntergeladen habe. Spielen Sie es mir vor und warten Sie.
Sprachsynthesesystem
ist eigentlich ein Tool, das auf Sprachsynthese basiert. Da viele Hersteller dies jedoch in Form einer API bereitstellen, wird die Entwicklungsschwierigkeit erheblich reduziert. Sie müssen nur einige APIs aufrufen, um Ihre eigenen zu implementieren Sprachsynthesewerkzeug; obwohl der Spatz klein ist, verfügt er über alle inneren Organe. Im größeren Maßstab handelt es sich um ein kleines Sprachsynthesesystem.
Vorbereitung
Zuerst müssen wir
- Anaconda
- Python 3.7
- Visual Studio-Code
Schritte
Hier wählen wir die WebAPI-Schnittstelle der offenen iFlytek-Plattform.
https://www.xfyun.cn/doc/tts/online_tts/API.html
Zuerst gehen wir zur Konsole, um eine Anwendung zu erstellen
Klicken Sie nach dem Erstellen auf die Anwendung, um sie dort einzugeben ist die Spalte „Anwendungsdetails“.
Klicken Sie links auf die Sprachsynthese und gehen Sie dann zur nächsten Ebene der Online-Sprachsynthese (Streaming-Version)
Oben rechts müssen wir drei Dinge abrufen:
- APPID
- APISecret
- APIKey
Code-Implementierung
Okay, lass uns zuerst den Code installieren, den wir brauchen.
pip install websocket-client pip install playsound
Als nächstes definieren wir ein Klassenspiel, das 4 Funktionen enthält
class play: def __init__(self): #初始化函数 def play_sound(self):#播放音频函数 def select_vcn(self,*arg):#选择下拉框设置发音人 def xfyun_tts(self):#进行语音合成
Hier müssen Sie die Appid, den Appkey und das Appsecret eingeben, die Sie gerade von der iFlytek-Open-Platform-Konsole erhalten haben
def __init__(self): self.APP_ID = 'xxx' #请填上自己的appid self.API_KEY = 'xxx'#请填上自己的appkey self.SECRET_KEY = 'xxx' #请填上自己的appsecret self.root=tk.Tk() #初始化窗口 self.root.title("语音合成系统") #窗口名称 self.root.geometry("600x550") #设置窗口大小 self.root.resizable(0,0) #self.root.resizable(width=True,height=True)#设置窗口是否可变,宽不可变,高可变,默认为True self.lb=tk.Label(self.root,text='请选择语音发音人')#标签 self.tt=tk.Text(self.root,width=77,height=30) #多行文本框 self.cb=ttk.Combobox(self.root, width=12)#下拉列表框 #设置下拉列表框的内容 self.cb['values']=("甜美女声-小燕","亲切男声-许久","知性女声-小萍", "可爱童声-许小宝","亲切女声-小婧") self.cb.current(0)#将当前选择状态置为0,也就是第一项 self.cb.bind("<<ComboboxSelected>>", self.select_vcn) self.tk_tts_file=tk.Label(self.root,text='生成文件名') self.b1=tk.Button(self.root, text='进行语音合成', width=10,height=1,command=self.xfyun_tts) #按钮 self.tk_play=tk.Button(self.root, text='播放', width=10,height=1,command=self.play_sound) #按钮 #各个组件的位置 self.tk_tts_file.place(x=30,y=500) self.b1.place(x=300,y=500) self.tk_play.place(x=400,y=500) self.lb.place(x=30,y=30) self.cb.place(x=154,y=30) self.tt.place(x=30,y=60) self.root.mainloop()
Wenn die Dropdown-Liste ausgewählt ist, Stellen Sie das entsprechende Aussprachezeichen ein
def select_vcn(self,*arg): if self.cb.get()=='甜美女声-小燕': self.vcn="xiaoyan" elif self.cb.get()=='亲切男声-许久': self.vcn="aisjiuxu" elif self.cb.get()=='知性女声-小萍': self.vcn="aisxping" elif self.cb.get()=='可爱童声-许小宝': self.vcn="aisbabyxu" elif self.cb.get()=='亲切女声-小婧': self.vcn="aisjinger" print(self.vcn)
Als Nächstes werden wir die mit iFlytek gelieferte Python-Demo modifizieren, um die Verwendung komfortabler zu gestalten. Durchsuchen Sie außerdem das Backend des öffentlichen Kontoprogrammierers Xiaole und antworten Sie auf „Geld verdienen“, um ein Überraschungsgeschenkpaket zu erhalten.
# -*- coding:utf-8 -*- # # author: iflytek # #本demo测试时运行的环境为:Windows + Python3.7 #本demo测试成功运行时所安装的第三方库及其版本如下: # cffi==1.12.3 # gevent==1.4.0 # greenlet==0.4.15 # pycparser==2.19 # six==1.12.0 # websocket==0.2.1 # websocket-client==0.56.0 # 合成小语种需要传输小语种文本、使用小语种发音人vcn、tte=unicode以及修改文本编码方式 #错误码链接:https://www.xfyun.cn/document/error-code (code返回错误码时必看) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # import websocket import datetime import hashlib import base64 import hmac import json from urllib.parse import urlencode import time import ssl from wsgiref.handlers import format_date_time from datetime import datetime from time import mktime import _thread as thread import os import wave STATUS_FIRST_FRAME = 0# 第一帧的标识 STATUS_CONTINUE_FRAME = 1# 中间帧标识 STATUS_LAST_FRAME = 2# 最后一帧的标识 PCM_PATH = "./demo.pcm" class Ws_Param(object): # 初始化 def __init__(self): pass def set_tts_params(self, text, vcn): if text != "": self.Text = text if vcn != "": self.vcn = vcn # 业务参数(business),更多个性化参数可在官网查看 self.BusinessArgs = {"bgs":1,"aue": "raw", "auf": "audio/L16;rate=16000", "vcn": self.vcn, "tte": "utf8"} #使用小语种须使用以下方式,此处的unicode指的是 utf16小端的编码方式,即"UTF-16LE"” #self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-16')), "UTF8")} self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-8')), "UTF8")} def set_params(self, appid, apiSecret, apiKey): if appid != "": self.APPID = appid # 公共参数(common) self.CommonArgs = {"app_id": self.APPID} if apiKey != "": self.APIKey = apiKey if apiSecret != "": self.APISecret = apiSecret # 生成url def create_url(self): url = 'wss://tts-api.xfyun.cn/v2/tts' # 生成RFC1123格式的时间戳 now = datetime.now() date = format_date_time(mktime(now.timetuple())) # 拼接字符串 signature_origin = "host: " + "ws-api.xfyun.cn" + "n" signature_origin += "date: " + date + "n" signature_origin += "GET " + "/v2/tts " + "HTTP/1.1" # 进行hmac-sha256进行加密 signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'), digestmod=hashlib.sha256).digest() signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8') authorization_origin = "api_key="%s", algorithm="%s", headers="%s", signature="%s"" % ( self.APIKey, "hmac-sha256", "host date request-line", signature_sha) authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') # 将请求的鉴权参数组合为字典 v = { "authorization": authorization, "date": date, "host": "ws-api.xfyun.cn" } url = url + '?' + urlencode(v) return url def on_message(ws, message): try: #print(message) try: message =json.loads(message) except Exception as e: print("111",e) code = message["code"] sid = message["sid"] audio = message["data"]["audio"] audio = base64.b64decode(audio) status = message["data"]["status"] print(code, sid, status) if status == 2: print("ws is closed") ws.close() if code != 0: errMsg = message["message"] print("sid:%s call error:%s code is:%s" % (sid, errMsg, code)) else: with open(PCM_PATH, 'ab') as f: f.write(audio) except Exception as e: print("receive msg,but parse exception:", e) # 收到websocket错误的处理 def on_error(ws, error): print("### error:", error) # 收到websocket关闭的处理 def on_close(ws): print("### closed ###") # 收到websocket连接建立的处理 def on_open(ws): def run(*args): d = {"common": wsParam.CommonArgs, "business": wsParam.BusinessArgs, "data": wsParam.Data, } d = json.dumps(d) print("------>开始发送文本数据") ws.send(d) if os.path.exists(PCM_PATH): os.remove(PCM_PATH) thread.start_new_thread(run, ()) def text2pcm(appid, apiSecret, apiKey, text, vcn, fname): wsParam.set_params(appid, apiSecret, apiKey) wsParam.set_tts_params(text, vcn) websocket.enableTrace(False) wsUrl = wsParam.create_url() ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}) pcm2wav(PCM_PATH, fname) def pcm2wav(fname, dstname): with open(fname, 'rb') as pcmfile: pcmdata = pcmfile.read() print(len(pcmdata)) with wave.open(dstname, "wb") as wavfile: wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) wavfile.writeframes(pcmdata) wsParam = Ws_Param()
Am Ende wurde auf diese Weise ein Sprachsynthesesystem implementiert.
Derzeit entwickeln sich verschiedene Cloud-Computing- und Cloud-Dienste rasant weiter, was die Schwelle für die Entwicklung künstlicher Intelligenz erheblich gesenkt hat. Sie müssen die Prinzipien der Sprachsynthese nicht verstehen, und das können Sie Entwickeln Sie schnell eine Stimme. Synthese-Tools sind da!
Das obige ist der detaillierte Inhalt vonVerwenden Sie Python, um ein Sprachsynthesesystem zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Hadidb: Eine leichte, hochrangige skalierbare Python-Datenbank Hadidb (HadIDB) ist eine leichte Datenbank in Python mit einem hohen Maß an Skalierbarkeit. Installieren Sie HadIDB mithilfe der PIP -Installation: PipinstallHadIDB -Benutzerverwaltung erstellen Benutzer: createUser (), um einen neuen Benutzer zu erstellen. Die Authentication () -Methode authentifiziert die Identität des Benutzers. fromHadidb.operationImportUseruser_obj = user ("admin", "admin") user_obj.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

Als Datenprofi müssen Sie große Datenmengen aus verschiedenen Quellen verarbeiten. Dies kann Herausforderungen für das Datenmanagement und die Analyse darstellen. Glücklicherweise können zwei AWS -Dienste helfen: AWS -Kleber und Amazon Athena.

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

Zu den Schritten zum Starten eines Redis -Servers gehören: Installieren von Redis gemäß dem Betriebssystem. Starten Sie den Redis-Dienst über Redis-Server (Linux/macOS) oder redis-server.exe (Windows). Verwenden Sie den Befehl redis-cli ping (linux/macOS) oder redis-cli.exe ping (Windows), um den Dienststatus zu überprüfen. Verwenden Sie einen Redis-Client wie Redis-Cli, Python oder Node.js, um auf den Server zuzugreifen.

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.
