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

基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人

 更新時(shí)間:2023年12月21日 08:20:00   作者:狼_先生  
這篇文章主要為大家詳細(xì)介紹了如何基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

樹(shù)莓派準(zhǔn)備

包的安裝

Python 3 默認(rèn)安裝在 Raspberry Pi 操作系統(tǒng)上,并用于許多重要功能。干擾系統(tǒng) Python 安裝可能會(huì)導(dǎo)致操作系統(tǒng)出現(xiàn)問(wèn)題,因此,如果安裝第三方 Python 庫(kù),請(qǐng)使用正確的包管理工具,這一點(diǎn)很重要。

有兩種方法可以將庫(kù)安裝到默認(rèn)python 發(fā)行版中。您可以使用 apt 并安裝預(yù)配置的系統(tǒng)軟件包,也可以使用 pip 安裝未作為 Raspberry Pi OS 的一部分分發(fā)的軟件包。

例如,要安裝 Python 3 庫(kù)以支持 Raspberry Pi 構(gòu)建 HAT,您需要:

$ sudo apt install python3-build-hat

但是我們大概率會(huì)遇到包管理工具沖突的問(wèn)題

產(chǎn)生此錯(cuò)誤的原因是您嘗試將第三方包安裝到系統(tǒng) Python 中。對(duì)于 Python 用戶來(lái)說(shuō),一個(gè)長(zhǎng)期存在的實(shí)際問(wèn)題是操作系統(tǒng)包管理器(如 apt)與 Python 特定的包管理工具(如 pip)之間的沖突。這些沖突包括 Python 級(jí) API 不兼容和文件所有權(quán)沖突。

因此,從 Bookworm 開(kāi)始,通過(guò) pip 安裝的軟件包必須使用 < /span>venv。虛擬環(huán)境是一個(gè)容器,您可以在其中安全地安裝第三方模塊,這樣它們就不會(huì)干擾或破壞您的 Python 系統(tǒng)。

虛擬環(huán)境

要使用虛擬環(huán)境,您需要?jiǎng)?chuàng)建一個(gè)容器來(lái)存儲(chǔ)環(huán)境。您可以通過(guò)多種方法來(lái)完成此操作,具體取決于您想要使用 Python 的方式。您可以繼續(xù)的一種方法是為您創(chuàng)建的每個(gè) Python 項(xiàng)目創(chuàng)建一個(gè)新的虛擬環(huán)境。在這里,您將創(chuàng)建一個(gè)目錄來(lái)保存您自己的代碼以及虛擬環(huán)境目錄:

$ mkdir my_project
$ cd my_project
$ python -m venv (你的項(xiàng)目名)

如果您現(xiàn)在查看 my_project 目錄,您將看到一個(gè)名為 你的項(xiàng)目名 的目錄。

下一步,我們來(lái)通過(guò)指令: python -m venv --system-site-packages (你的項(xiàng)目名) 來(lái)創(chuàng)建虛擬環(huán)境。`

$ source (你的項(xiàng)目名)/bin/activate

(你的項(xiàng)目名) $

現(xiàn)在我們就可以使用 pip 進(jìn)行安裝了。

Pycharm準(zhǔn)備

所需要的包

以下是需要安裝的一些python依賴包

  • pip install speech_recognition 安裝speech_recognition依賴包, 用于錄音、生成wav文件
  • pip install baidu-aip 安裝百度AI的sdk, 調(diào)用語(yǔ)音技術(shù)接口將音頻識(shí)別為文本數(shù)據(jù)返回
  • pip install pygame 安裝pygame依賴包, 將文本信息以音頻的格式播放出來(lái)

編程邏輯

  • 第一步: “拾音”
  • 第二步: STT轉(zhuǎn)換
  • 第三步: MOSS機(jī)器人回復(fù)文本
  • 第四步: TTS轉(zhuǎn)換 + 語(yǔ)音合成
  • 第五步: 外放語(yǔ)音

第一步: 拾音

首先我們測(cè)試錄音設(shè)備是否存在。我們?cè)跇?shù)莓派終端里面輸入指令:

arecord -l

會(huì)得到如下回復(fù):

這就是說(shuō)明我們的設(shè)備是存在的。我們也能在這里看到有幾個(gè)設(shè)備,可以選擇用哪個(gè)。

arecord -D "plughw:3" -f S16_LE -r16000 -d4 /home/admin/PyCode/WS_Project_MOSS/voices/myvoices.wav

參數(shù)解析

- -D 指定錄音設(shè)備,-D hw:1,0的意思就是選用card1(SmartIC Audio Device)設(shè)備錄音

- -c 設(shè)置通道個(gè)數(shù),-c2的意思就是錄制2通道的音頻文件

- -r 設(shè)置采樣率,-r16000的意思就是設(shè)置采樣率為16000

- -f 指定錄音格式,-fS16_LE的意思就是錄制S16_LE格式的音頻文件

-h,—help(幫助)

-V,–version(打印版本信息)

-l,–list-devices(列出全部聲卡和數(shù)字音頻設(shè)備)

-L,–list-pcms(列出全部PCM定義)

-D,–device(指定PCM設(shè)備名稱)

-q,–quiet(安靜模式)

-t,–file-type(文件類型voc,wav,raw或au)

-c,–channels(設(shè)置通道數(shù))

-f,–format(設(shè)置格式)

-r,–rate(設(shè)置頻率)

-d,–duration(設(shè)置持續(xù)時(shí)間,單位為秒)

-s,–sleep-min(設(shè)置最小休眠時(shí)間)

-M,–mmap(mmap流)

-N,–nonblock(設(shè)置為非塊模式)

-B,–buffer-time(緩沖持續(xù)時(shí)長(zhǎng),單位為微秒)

-v,–verbose(顯示PCM結(jié)構(gòu)和設(shè)置)

-I,–separate-channels(設(shè)置為每個(gè)通道一個(gè)單獨(dú)文件)

第二步:語(yǔ)音識(shí)別

通過(guò)百度語(yǔ)音識(shí)別服務(wù)(可以去官網(wǎng)上找一下,然后注冊(cè)應(yīng)用,獲得自己的 APP_ID, APP_KEYSECRET_KEY

根據(jù)百度語(yǔ)音識(shí)別官方給的文檔,我們來(lái)對(duì)接一下這個(gè)API接口

from aip import AipSpeech
import request
import json



# 配置一下API接口所需要的參數(shù)
APP_ID = '___________'  
API_KEY = '________________'  
SECRET_KEY = '___________________'  
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
path = 'voices/myvoices.wav'


def listen():  
    # 讀取錄音文件  
    with open(path, 'rb') as fp:  
    voices = fp.read()  
    try:  
        # 參數(shù)dev_pid:1536普通話(支持簡(jiǎn)單的英文識(shí)別)、1537普通話(純中文識(shí)別)、1737英語(yǔ)、1637粵語(yǔ)、1837四川話、1936普通話遠(yuǎn)場(chǎng)  
        result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537})  
        result_text = result["result"][0]  
        print("我聽(tīng)到你說(shuō): " + result_text)  
        return result_text  
    except KeyError:  
        print(result.get('err_no'))

第三步:機(jī)器人的思考回答

現(xiàn)在我們來(lái)等待機(jī)器人的回復(fù)。這里我們需要調(diào)用接口,我們現(xiàn)在使用的是 ERNIE-BOT-4.0, 我們后續(xù)會(huì)嘗試一下調(diào)用 ChatGPT的API接口,就相當(dāng)于是把機(jī)器人的大腦換一下。

很簡(jiǎn)單,依據(jù) 文檔,我們來(lái)寫一下以下兩個(gè)函數(shù)。

def get_access_token():  
    """  
    使用 API Key,Secret Key 獲取access_token,替換下列應(yīng)用API Key、應(yīng)用Secret Key  
    """  

    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的信息&client_secret=你的信息"  

    payload = json.dumps("")  
    headers = {  
    'Content-Type': 'application/json',  
    'Accept': 'application/json'  
    }  

    response = requests.request("POST", url, headers=headers, data=payload)  
    return response.json().get("access_token")
    

def bot(question):  
    # url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + get_access_token()  
    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=24.3990f1717b7636be7b8a4de154a49b5a.2592000.1705210204.282335-45017968"  

    payload = json.dumps({  
        "messages": [  
        {  
            "role": "user",  
            "content": f"{question}"  
        }]  
        })  
        headers = {  
            'Content-Type': 'application/json'  
        }  

    response = requests.request("POST", url, headers=headers, data=payload)  

    temp = json.loads(response.text)  
    print(temp.get('result'))  
    return temp.get('result')

第四步:TTS轉(zhuǎn)換 + 外放語(yǔ)音

接下來(lái),我們要把機(jī)器人回復(fù)給我們的文字轉(zhuǎn)換成語(yǔ)音

import os
import sys


def say(response):  
    result = client.synthesis(f'{response}', 'zh', 1, {  
        'vol': 5,  
    })  

    # 識(shí)別正確返回語(yǔ)音二進(jìn)制 錯(cuò)誤則返回dict 參照下面錯(cuò)誤碼  
    if not isinstance(result, dict):  
        with open('robot/audio.mp3', 'wb') as f:  
            f.write(result)
            
    os.system('sudo aplay /home/admin/PyCode/WS_Project_MOSS/robot/audio.mp3')

第五步:整合

詳情請(qǐng)閱覽 gitee 倉(cāng)庫(kù)源碼

到此這篇關(guān)于基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人的文章就介紹到這了,更多相關(guān)Python語(yǔ)音機(jī)器人內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 人工智能學(xué)習(xí)Pytorch教程Tensor基本操作示例詳解

    人工智能學(xué)習(xí)Pytorch教程Tensor基本操作示例詳解

    這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch教程Tensor的基本操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法

    Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法

    這篇文章主要介紹了Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 詳解python中flask_caching庫(kù)的用法

    詳解python中flask_caching庫(kù)的用法

    這篇文章主要介紹了詳解python中flask_caching庫(kù)的用法,可以在一定的時(shí)間內(nèi)直接返回結(jié)果而不是每次都需要計(jì)算或者從數(shù)據(jù)庫(kù)中查找。flask_caching插件就是提供這種功能的神器,需要的朋友可以參考下
    2023-05-05
  • 利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    JSON(JavaScript Object Nonation)是利用鍵值對(duì)+嵌套來(lái)表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點(diǎn),這篇文章主要介紹了利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下
    2019-07-07
  • 利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)試的示例代碼

    利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)試的示例代碼

    Speedtest CLI 為命令行帶來(lái) Speedtest 背后的可信技術(shù)和全球服務(wù)器網(wǎng)絡(luò)。本文將利用它進(jìn)行網(wǎng)絡(luò)測(cè)試,感興趣的小伙伴可以了解一下
    2022-04-04
  • Python?pip下載包及所有依賴到指定文件夾的步驟說(shuō)明

    Python?pip下載包及所有依賴到指定文件夾的步驟說(shuō)明

    為了方便開(kāi)發(fā)和部署,我們常常需要將Python項(xiàng)目所依賴的第三方包導(dǎo)出到本地文件夾中,這篇文章主要介紹了Python?pip下載包及所有依賴到指定文件夾的步驟說(shuō)明,需要的朋友可以參考下
    2025-06-06
  • 在Python IDLE 下調(diào)用anaconda中的庫(kù)教程

    在Python IDLE 下調(diào)用anaconda中的庫(kù)教程

    這篇文章主要介紹了在Python IDLE 下調(diào)用anaconda中的庫(kù)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python爬取基于m3u8協(xié)議的ts文件并合并

    python爬取基于m3u8協(xié)議的ts文件并合并

    這篇文章主要為大家詳細(xì)介紹了python爬取基于m3u8協(xié)議的ts文件并合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python包管理工具uv常用場(chǎng)景使用超詳細(xì)指南

    Python包管理工具uv常用場(chǎng)景使用超詳細(xì)指南

    UV是由Astral團(tuán)隊(duì)開(kāi)發(fā)的高性能?Python環(huán)境管理器,旨在統(tǒng)一替代pyenv、pip、venv、pip-tools、pipenv等工具,這篇文章主要介紹了Python包管理工具uv常用場(chǎng)景使用的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • python正則表達(dá)式最詳解

    python正則表達(dá)式最詳解

    篇文章主要介紹了Python中正則表達(dá)式的詳細(xì)解釋,正則表達(dá)式是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要內(nèi)容,需要的朋友可以參考下
    2021-11-11

最新評(píng)論

西青区| 东平县| 丹巴县| 澄迈县| 翼城县| 长乐市| 新密市| 星子县| 康保县| 新巴尔虎右旗| 鄂伦春自治旗| 府谷县| 盈江县| 虹口区| 灵川县| 拜城县| 泉州市| 内乡县| 蕲春县| 松原市| 永州市| 金沙县| 北海市| 弥勒县| 太仓市| 林西县| 苏州市| 长治市| 松江区| 锡林浩特市| 临漳县| 乌兰浩特市| 永新县| 五常市| 乐都县| 鞍山市| 龙陵县| 泸溪县| 竹北市| 舒兰市| 元江|