最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)

 更新時(shí)間:2022年02月14日 16:31:14   作者:迢迢x  
在自然語(yǔ)言處理上,文字、音頻互轉(zhuǎn)是一個(gè)很關(guān)鍵的技術(shù)點(diǎn)。對(duì)于語(yǔ)音轉(zhuǎn)文字,個(gè)人實(shí)現(xiàn)較為困難,我們可以使用語(yǔ)音轉(zhuǎn)文字的軟件或借助各API(如科大訊飛等)進(jìn)行移植開發(fā)。不過(guò)文字轉(zhuǎn)語(yǔ)音就相對(duì)而言容易實(shí)現(xiàn)很多了

前言:

這是一篇簡(jiǎn)單的Python文字(漢字)轉(zhuǎn)語(yǔ)音教程,當(dāng)然對(duì)于其他語(yǔ)言工具在實(shí)現(xiàn)的方法上也是一樣的 。

漢字轉(zhuǎn)語(yǔ)音實(shí)現(xiàn)就分為兩步,第一步將漢字轉(zhuǎn)為拼音,第二步通過(guò)拼音調(diào)用相匹配的音頻文件。下面是具體的開發(fā)實(shí)例教程。

開發(fā)環(huán)境:Windows

Python版本:3.x

外置模塊準(zhǔn)備:pygame(可直接在cmd命令行中pip install pygame安裝)

漢字轉(zhuǎn)拼音

我使用的是將漢字轉(zhuǎn)為Unicode碼,然后通過(guò)查詢一個(gè)匹配文件(我使用的是unicode_py.txt)獲取該漢字的拼音,該文件中列有從4E00-9FA5標(biāo)準(zhǔn)漢字的Unicode編碼所對(duì)應(yīng)的拼音,外加一個(gè)落單的3007編碼的“〇”。

文件如下:

在大寫拼音英文后的1,2,3,4,5分別表示一,二,三,四和輕聲(注意到存在有多音字)

我們將其封裝成一個(gè)函數(shù),參數(shù)為一個(gè)全是漢字的字符串,返回是一個(gè)拼音字符串。(即chinese_to_pinyin("秋水共長(zhǎng)天一色") 返回的是"QIU1 SHUI3 GONG4 CHANG2 TIAN1 YI1 SE4 ")

源碼如下:

def chinese_to_pinyin(x):
    y = ''
    dic = {}
    with open("unicode_py.txt") as f:
        for i in f.readlines():
            dic[i.split()[0]] = i.split()[1]
    for i in x:
        i = str(i.encode('unicode_escape'))[-5:-1].upper()
        try:
            y += dic[i] + ' '
        except:
            y += 'XXXX ' #非法字符我們用XXXX代替
    return y

說(shuō)明:將該文件與"unicode_py.txt"文件放在同一目錄下,代碼比較簡(jiǎn)陋,因?yàn)橹饕o大家講實(shí)現(xiàn)教學(xué),所以沒有對(duì)多音字進(jìn)行處理(所以默認(rèn)使用第一個(gè)使用頻率最高的音)

拼音轉(zhuǎn)語(yǔ)音

這一步也比較簡(jiǎn)單,我們根據(jù)拼音調(diào)用相對(duì)應(yīng)的單個(gè)音的音頻文件即可。單個(gè)音的音頻文件可以自己錄或找人錄,渠道有很多哦。注意文件格式,最好是mp3或wav文件。

部分文件展示如下:

我們將其置入一個(gè)voice文件夾下。準(zhǔn)備工作就做好了。

我們同樣將漢字轉(zhuǎn)語(yǔ)音封裝成一個(gè)make_voice函數(shù),參數(shù)為一個(gè)漢字字符串,然后調(diào)用chinese_to_pinyin函數(shù),返回值不重要,可為空,功能實(shí)現(xiàn)是調(diào)用音頻文件發(fā)音。

源碼如下:

import pygame
def make_voice(x):
    pygame.mixer.init()
    voi = chinese_to_pinyin(x).split()
    for i in voi:
        if i == 'XXXX':  #處理'XXXX'的音,可將其忽略
            continue
        pygame.mixer.music.load("voice/" + i + ".mp3")
        pygame.mixer.music.play()
        while pygame.mixer.music.get_busy() == True:
            pass
    return None

我們展示一下這個(gè)教學(xué)版的最后完整的代碼圖(該文件名為"test.py"):

import pygame
 
def chinese_to_pinyin(x):
    y = ''
    dic = {}
    with open("unicode_py.txt") as f:
        for i in f.readlines():
            dic[i.split()[0]] = i.split()[1]
    for i in x:
        i = str(i.encode('unicode_escape'))[-5:-1].upper()
        try:
            y += dic[i] + ' '
        except:
            y += 'XXXX '
    return y
 
def make_voice(x):
    pygame.mixer.init()
    voi = chinese_to_pinyin(x).split()
    for i in voi:
        if i == 'XXXX':
            continue
        pygame.mixer.music.load("voice/" + i + ".mp3")
        pygame.mixer.music.play()
        while pygame.mixer.music.get_busy() == True:
            pass
    return None
 
while True:
    p = input("請(qǐng)輸入文字:")
    make_voice(p)
 

教程文件的目錄結(jié)構(gòu):

test.py
unicode_py.txt
voice----A1.mp3
         A2.mp3
         A3.mp3
         ...

實(shí)現(xiàn)原理就是這樣,同時(shí)也可以視一些具體情況做一些拓展,例如將阿拉伯?dāng)?shù)字轉(zhuǎn)漢字讀法(即1234006.15讀作“一百二十三萬(wàn)四千零六點(diǎn)一五”,這個(gè)實(shí)現(xiàn)不難),還有將多音字問(wèn)題攻破也是很棒的。

當(dāng)然只要想法夠豐富用pygame的音頻功能也能實(shí)現(xiàn)很多有趣的功能(如播放器制作或電子音樂簡(jiǎn)單創(chuàng)作等)。

結(jié)尾:

以上就是本文的全部?jī)?nèi)容了,大家喜歡的記得點(diǎn)點(diǎn)贊!

到此這篇關(guān)于Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python 文字轉(zhuǎn)語(yǔ)音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解python的ORM中Pony用法

    詳解python的ORM中Pony用法

    本篇文章給大家詳細(xì)介紹了python的ORM中Pony用法以及詳細(xì)代碼分享,對(duì)此有需要的朋友測(cè)試參考下。
    2018-02-02
  • 詳解python while 函數(shù)及while和for的區(qū)別

    詳解python while 函數(shù)及while和for的區(qū)別

    這篇文章主要介紹了python while 函數(shù)及while和for的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • python列表的構(gòu)造方法list()

    python列表的構(gòu)造方法list()

    這篇文章主要介紹了python列表的構(gòu)造方法list(),python中沒有數(shù)組這個(gè)概念,與之相應(yīng)的是列表,本篇文章就來(lái)說(shuō)說(shuō)列表這個(gè)語(yǔ)法,下面文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • Pandas之drop_duplicates:去除重復(fù)項(xiàng)方法

    Pandas之drop_duplicates:去除重復(fù)項(xiàng)方法

    下面小編就為大家分享一篇Pandas之drop_duplicates:去除重復(fù)項(xiàng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 五分鐘學(xué)會(huì)Python 模塊和包、文件

    五分鐘學(xué)會(huì)Python 模塊和包、文件

    通過(guò)學(xué)習(xí)本文可以五分鐘掌握Python 模塊和包、文件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python-web根據(jù)元素屬性進(jìn)行定位的方法

    python-web根據(jù)元素屬性進(jìn)行定位的方法

    這篇文章主要介紹了python-web根據(jù)元素屬性進(jìn)行定位的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python使用list列表和tuple元組的方法

    Python使用list列表和tuple元組的方法

    這篇文章主要介紹了Python使用list列表和tuple元組的方法,list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • 基于Python實(shí)現(xiàn)圖片瀏覽器的應(yīng)用程序

    基于Python實(shí)現(xiàn)圖片瀏覽器的應(yīng)用程序

    圖像瀏覽器應(yīng)用程序是一種非常常見和實(shí)用的工具,這篇文章就來(lái)為大家介紹一下如何使用Python編程語(yǔ)言和wxPython庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的圖像瀏覽器應(yīng)用程序,感興趣的可以了解下
    2023-10-10
  • python實(shí)現(xiàn)哈希表

    python實(shí)現(xiàn)哈希表

    介紹一個(gè)用python實(shí)現(xiàn)的哈希表,處理沖突的方法是開放地址法,沖突表達(dá)式為Hi=(H(key)+1)mod m,m為表長(zhǎng)。遲點(diǎn)再實(shí)現(xiàn)更難的拉鏈法
    2014-02-02
  • pytorch中nn.RNN()匯總

    pytorch中nn.RNN()匯總

    這篇文章主要介紹了pytorch中nn.RNN()知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

大宁县| 鲜城| 新化县| 英德市| 宜兰县| 维西| 额尔古纳市| 瑞昌市| 永定县| 象州县| 万年县| 成都市| 临朐县| 崇明县| 灵武市| 资中县| 康平县| 富平县| 九江县| 大姚县| 凌云县| 高碑店市| 塔城市| 开封市| 卢龙县| 临湘市| 裕民县| 宿松县| 勐海县| 安图县| 阳谷县| 庆城县| 玉屏| 新乡县| 蓬溪县| 夏河县| 永济市| 松原市| 鲁山县| 郴州市| 兴山县|