【小沐學Python】Python實現TTS文本轉語音(speech、pyttsx3、百度AI)

文章目錄

  • 1、簡介
  • 2、Windows語音
    • 2.1 簡介
    • 2.2 安裝
    • 2.3 代碼
  • 3、pyttsx3
    • 3.1 簡介
    • 3.2 安裝
    • 3.3 代碼
  • 4、ggts
    • 4.1 簡介
    • 4.2 安裝
    • 4.3 代碼
  • 5、SAPI
  • 6、SpeechLib
  • 7、百度AI
  • 8、百度飛槳
  • 結語

1、簡介

TTS(Text To Speech) 譯為從文本到語音,TTS是人工智能AI的一個模組,是人機對話的一部分,即讓機器能夠說話。

TTS是語音合成技術應用的一種,首先采集語音波形,然后進行優化處理,最后存儲在數據庫中,合成語音是提取波形轉換成自然語音輸出。

2、Windows語音

2.1 簡介

https://support.microsoft.com/zh-cn/windows/%E5%9C%A8%E8%AF%AD%E9%9F%B3%E6%8F%90%E7%A4%BA%E4%B8%ADwindows-83ff75bd-63eb-0b6c-18d4-6fae94050571

Windows 語音識別允許你單獨通過語音控制電腦,而無需鍵盤或鼠標。 本文列出了可用于語音識別的命令。

2.2 安裝

speech模塊是一個封裝層模塊,用于調取Windows本地的語音合成服務。因此請確保你使用的OS是Windows并且有python調取Windows的API,pywin32。

pip install speech

在這里插入圖片描述
speech.py文件進行修改:print(prompt)、import _thread

pip install pypiwin32

在這里插入圖片描述

2.3 代碼

import speech#自動體系
speech.say("要開始啦")#輸入語音
while True:print(u"開始說話")say = speech.input()  # 接收語音# speech.say("你說了" + say)  # 說話speech.say(say)  # 說話

在這里插入圖片描述

import speechwhile True:say = speech.input() # 接收語音speech.say("you said:"+say) #說話if say == "你好":speech.say("How are you?")elif say == "天氣":speech.say("今天天氣晴!")

3、pyttsx3

3.1 簡介

https://pypi.org/project/pyttsx3/

適用于 Python 2 和 3 的文本轉語音 (TTS) 庫。無需互聯網連接或延遲即可工作。支持多種TTS引擎,包括Sapi5、nsss、espeak等。
在這里插入圖片描述
pyttsx3 是 Python 中的文本到語音轉換庫。與其他庫不同,它可以離線工作,并且與 Python 2 和 3 兼容。

pyttsx3庫 : 是Python中的文本到語音轉換庫, 它可以脫機工作
優點 : 可以脫機工作, 支持將語音直接朗讀, 可調節音量和速度
缺點 : 初始只有英語(女)和中文(女)的語音包, 其他語言的語音包需要另外下載

3.2 安裝

pip install pyttsx3

在這里插入圖片描述

3.3 代碼

#coding=utf-8
import pyttsx3
pyttsx3.speak("Hello World!")
pyttsx3.speak("持續推動我國經濟實現質的有效提升和量的合理增長")	
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()
import pyttsx3
engine = pyttsx3.init() # object creation""" RATE"""
rate = engine.getProperty('rate')   # getting details of current speaking rate
print (rate)                        #printing current voice rate
engine.setProperty('rate', 125)     # setting up new voice rate"""VOLUME"""
volume = engine.getProperty('volume')   #getting to know current volume level (min=0 and max=1)
print (volume)                          #printing current volume level
engine.setProperty('volume',1.0)    # setting up volume level  between 0 and 1"""VOICE"""
voices = engine.getProperty('voices')       #getting details of current voice
#engine.setProperty('voice', voices[0].id)  #changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id)   #changing index, changes voices. 1 for femaleengine.say("Hello World!")
engine.say('My current speaking rate is ' + str(rate))
engine.runAndWait()
engine.stop()"""Saving Voice to a file"""
# On linux make sure that 'espeak' and 'ffmpeg' are installed
engine.save_to_file('Hello World', 'test.mp3')
engine.runAndWait()

4、ggts

4.1 簡介

https://pypi.org/project/gTTS/
gTTS(Google Text-to-Speech),一個 Python 庫和 CLI 工具,用于與 Google 翻譯文本轉語音 API 交互。
在這里插入圖片描述

gTTS(Google Text-to-Speech),一個 Python 庫和 CLI 工具,用于與 Google Translate 的文本轉語音 API 交互。 將語音數據寫入文件、類似文件的對象 (bytestring) 以進行進一步的音頻操作。

4.2 安裝

pip install gTTS

在這里插入圖片描述

4.3 代碼

gtts-cli 'hello' --output hello.mp3

from gtts import gTTS
tts = gTTS('hello')
tts.save('hello.mp3')

在這里插入圖片描述
執行失敗了。

5、SAPI

SAPI是微軟Speech API , 是微軟公司推出的語音接口,而從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他并沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當雞脅。
操作window dll的庫,它可以實現很多功能,十分強大。

import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("hello")

6、SpeechLib

comtypes依賴pyttsx3包。( comtypes Required-by: pyttsx3 )
安裝:

pip install comtypes

代碼:

from comtypes.client import CreateObjectengine = CreateObject('SAPI.SpVoice')
stream = CreateObject('SAPI.SpFileStream')from comtypes.gen import SpeechLib  # 導這個包必須放在 上面3行代碼 后面,否則運行時會報錯。infile = 'demo.txt'
outfile = 'demo_audio.wav'stream.Open(outfile, SpeechLib.SSFMCreateForWrite)
engine.AudioOutputStream = stream
# 讀取文本內容
f = open(infile, 'r', encoding='utf-8')
theText = f.read()
f.close()
engine.speak(theText)
stream.close()

7、百度AI

https://ai.baidu.com/

基于Deep Peak2的端到端建模,將音頻流實時識別為文字,并返回每句話的開始和結束時間,適用于長句語音輸入、音視頻字幕、會議等場景.
在這里插入圖片描述
在這里插入圖片描述
https://ai.baidu.com/sdk#asr
在這里插入圖片描述
https://console.bce.baidu.com/ai/#/ai/speech/overview/resource/getFree
在這里插入圖片描述

pip install baidu_aip
from aip import AipSpeech#用上面提到的APP ID, API Key和Secret Key替換
APP_ID = 'xxxx'
API_KEY = 'xxxx'
SECRET_KEY = 'xxxx'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)manual = r'百度你好! \
語音合成測試。'if __name__ == '__main__':print('start voice process')#語速spd: 5, 語調pit: 5, 播音per: 1result  = client.synthesis(manual, 'zh', 1, {'vol': 5, 'per':1,})# 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼if not isinstance(result, dict):with open('audio.mp3', 'wb') as f:f.write(result)print('process end')

8、百度飛槳

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simplepaddlespeech tts --input '人工智能體驗' --output test.wav
paddlespeech asr --input test.wav
paddlespeech asr --lang zh --input test.wav
from paddlespeech.cli.asr.infer import ASRExecutor
asr = ASRExecutor()
result = asr(audio_file="test.wav")
print(result)

結語

如果您覺得該方法或代碼有一點點用處,可以給作者點個贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
如果您感覺方法或代碼不咋地//(ㄒoㄒ)//,就在評論處留言,作者繼續改進;o_O???
如果您需要相關功能的代碼定制化開發,可以留言私信作者;(????)
感謝各位大佬童鞋們的支持!( ′ ▽′ )ノ ( ′ ▽′)っ!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212710.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

K8S學習指南(6)-k8s核心概念label和label selector

文章目錄 前言Label是什么?示例 Label Selector是什么?示例 Label的使用場景Label Selector的類型Label和Label Selector的高級應用使用Label Selector選擇Service的后端Pod使用Label Selector進行滾動更新 總結 前言 Kubernetes是一個強大的容器編排平…

Python從入門到精通

一、Python基礎語法 1、字面量 掌握字面量的含義了解常見的字面量類型基于print語句完成各類字面量的輸出 什么是字面量? 字面量:在代碼中,被寫下來的的固定的值,稱之為字面量 常用的值類型 Python中常用的有6種值&#xff…

MyBatis 四大核心組件之 ResultSetHandler 源碼解析

🚀 作者主頁: 有來技術 🔥 開源項目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 倉庫主頁: Gitee 💫 Github 💫 GitCode 💖 歡迎點贊…

MyBatis動態SQL(Dynamic SQL)

Mybatis框架的動態SQL技術是一種根據特定條件動態拼裝SQL語句的功能,它存在的意義是為了解決拼接SQL語句字符串時的痛點問題。 實際開發中可以通過以下幾種標簽進行動態SQL拼接。 1 if標簽 根據test屬性所對應的表達式計算結果決定標簽中的內容是否拼接到sql中。 …

基于SpringBoot+JSP+Mysql寵物領養網站+協同過濾算法推薦寵物(Java畢業設計)

大家好,我是DeBug,很高興你能來閱讀!作為一名熱愛編程的程序員,我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里,我將會結合實際項目經驗,分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

《C++新經典設計模式》之第15章 適配器模式

《C新經典設計模式》之第15章 適配器模式 適配器模式.cpp 適配器模式.cpp #include <iostream> #include <vector> #include <string> #include <fstream> #include <memory> using namespace std;// 解決兩個類之間的兼容性問題 // 轉換接口調…

ffmpeg6.0之ffprobe.c源碼分析二-核心功能源碼分析

本篇我們繼續分析: 1、ffprobe -show_packets 參數的處理流程;2、ffprobe -show_frames 參數的處理流程;3、ffprobe -show_streams 參數的處理流程;4、ffprobe -show_format 參數的處理流程; 因為前面的文章已經回顧了這些命令的使用,以及作用。本文就不在贅述,以免篇幅…

《妙趣橫生的算法》(C語言實現)- 第5章 數學趣題(一)

《妙趣橫生的算法》&#xff08;C語言實現&#xff09;-第5章 數學趣題&#xff08;一&#xff09; 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 例如&#xff1a;第一章 Python 機器學習入門之pandas的使用 提示&#xff1a;寫完文…

“新華三杯”第十屆成都信息工程大學ACM程序設計競賽(同步賽)L. 怎么走啊(最短路+二分 分段函數)

題目 登錄—專業IT筆試面試備考平臺_牛客網 思路來源 衡陽師范學院ac代碼、pj學弟 題解 大致可以證明&#xff0c;在w從1e5減小到1的過程中&#xff0c; 之前某條反向邊沒有用到&#xff0c;現在需要用到反向邊&#xff0c;也就是正向邊用到的變少了 這樣的變化有sqrt個&a…

分層網絡模型(OSI、TCP/IP)及對應的網絡協議

OSI七層網絡模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即開放式系統互連參考模型&#xff0c; 一般都叫OSI參考模型&#xff0c;是ISO組織于1985年研究的網絡互連模型。OSI是分層的體系結構&#xff0c;每一層是一個模塊&#xff0c;用于完成某種功…

服務器GPU占用,kill -9 PID 用不了,解決辦法

PID&#xff08;progress ID 進程ID&#xff09; 上圖為占用情況&#xff0c;使用下面的指令都不管用 kill -9 PID kill -15 PID # 加入sudo 還是不行 # 等等網上的 chatgpt 提供的其他辦法&#xff0c;一圈試了下來還是不管用最后解決辦法 首先用下面的指令查看進程的樹結構…

【Hexo】自動在中英文之間添加空格

本文首發于 ??慕雪的寒舍 如題&#xff0c;中英文添加空格是比較規范的寫法&#xff0c; 但是我個人實在是懶&#xff0c;每次都要這么弄太累了。想找找hexo有沒有對應的插件&#xff0c;還是有的 npm install hexo-filter-auto-spacing --save安裝了之后&#xff0c;在hexo的…

〖大前端 - 基礎入門三大核心之JS篇?〗- 面向對象之對象的方法、遍歷、深淺克隆

說明&#xff1a;該文屬于 大前端全棧架構白寶書專欄&#xff0c;目前階段免費&#xff0c;如需要項目實戰或者是體系化資源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩編程&#xff0c;十余年工作經驗, 從事過全棧研發、產品經理等工作&#xff0c;目前在公司…

iOS使用CoreText完成txt閱讀器

CoreText是一個高效處理字符和字形轉換和進行文字排版的框架&#xff0c;API基于C語言。 常見的CoreText類介紹 &#xff08;1&#xff09;、CFAttributedStringRef 屬性字符串&#xff0c;用于存儲需要繪制的文字字符和字符屬性 &#xff08;2&#xff09;、CTFramesetterR…

【原創】錄剪視頻的折騰之路

制作視頻的起因 本人為IT男&#xff0c;IT發展快&#xff0c;需要學習的東西又多。往往為了一個技術小問題&#xff0c;花好幾天時間學習&#xff0c;接下來十來分鐘把事情做完。下次遇到這個同樣的問題的時候&#xff0c;可能是幾個月后&#xff0c;甚至是幾年以后了。這些技…

微信小程序頁面跳轉方法

文章目錄 前言方式一&#xff1a;wx.navigateTo方式二&#xff1a;wx.redirectTo方式三&#xff1a;wx.reLaunch方式四&#xff1a;wx.switchTab方式五&#xff1a;wxml中navigator標簽跳轉頁面回退 前言 微信小程序頁面跳轉的各種方法總結&#xff0c;備查。 方式一&#xff…

汽車連接器

汽車連接器 電子元器件百科 文章目錄 汽車連接器前言一、汽車連接器是什么二、汽車連接器的類別三、汽車連接器的應用實例四、汽車連接器的作用原理總結前言 汽車連接器通常需要具備防水、防塵、耐高溫等特性,以適應汽車惡劣的工作環境。它們的設計和連接方式也各不相同,以適…

JVM 內存分析工具 Memory Analyzer Tool(MAT)的深度講解

目錄 一. 前言 二. MAT 使用場景及主要解決問題 三. MAT 基礎概念 3.1. Heap Dump 3.2. Shallow Heap 3.3. Retained Set 3.4. Retained Heap 3.5. Dominator Tree 3.6. OQL 3.7. references 四. MAT 功能概述 4.1. 內存分布 4.2. 對象間依賴 4.3. 對象狀態 4.4…

鴻蒙前端開發-構建第一個ArkTS應用(Stage模型)

創建ArkTS工程 若首次打開DevEco Studio&#xff0c;請點擊Create Project創建工程。如果已經打開了一個工程&#xff0c;請在菜單欄選擇File > New > Create Project來創建一個新工程。 選擇Application應用開發&#xff08;本文以應用開發為例&#xff0c;Atomic Serv…

docker-compose安裝教程

1.確認docker-compose是否安裝 docker-compose -v如上圖所示表示未安裝&#xff0c;需要安裝。 如上圖所示表示已經安裝&#xff0c;不需要再安裝&#xff0c;如果覺得版本低想升級&#xff0c;也可以繼續安裝。 2.離線安裝 下載docker-compose安裝包&#xff0c;上傳到服務…