調用通義千問實現語音合成并將合成的音頻通過揚聲器播放

1. 作者介紹

郭建東,男,西安工程大學電子信息學院,2024級研究生
研究方向:機器視覺與人工智能
電子郵件:1229963266@qq.com

高金年,男,西安工程大學電子信息學院,2024級研究生,張宏偉人工智能課題組
研究方向:機器人與智能裝備控制技術
電子郵件:2432529790@qq.com

2. 調用通義千問實現語音合成并將合成的音頻通過揚聲器播放

2.1.通義千問語音合成簡介

通義千問是阿里云推出的一個大型語言模型,基于先進的深度學習技術打造,能夠理解和生成自然語言,在多輪對話、知識問答等多種應用場景中發揮重要作用。
優點:它具有高度準確的語言理解能力,能精準把握用戶問題和意圖;支持多種語言輸入輸出,如中文、英文等;還具備出色的多輪對話支持能力,可依據上下文進行交互,提供自然流暢的對話體驗。

2.2語音合成

語音合成,又稱文本轉語音(Text-to-Speech,TTS),是將文本轉換為自然語音的技術。該技術基于機器學習算法,通過學習大量語音樣本,掌握語言的韻律、語調和發音規則,從而在接收到文本輸入時生成真人般自然的語音內容。
作用:在通義千問的應用生態中,語音合成技術至關重要。它將模型生成的文本轉化為語音,實現了人機交互的語音化,讓用戶能通過語音接收信息,極大地提升了交互的便捷性和自然度。
例如在智能客服場景中,用戶提問后,通義千問給出的回答可通過語音合成直接播報,無需用戶閱讀文字,尤其適用于不方便看屏幕的場景,提高了服務效率和用戶體驗。

2.3.通義千問語音合成算法

  1. CosyVoice 模型介紹:
    CosyVoice是通義實驗室依托大規模預訓練語言模型,深度融合文本理解和語音生成的新一代生成式語音合成大模型,在自然語音生成方面表現卓越。支持多語言生成,涵蓋中文、英文、日文、粵語和韓語五種語言,滿足不同地區用戶的需求;具備強大的音色和情感控制能力,僅需3 - 10秒的原始音頻,就能生成模擬音色,包含韻律和情感等細節,還能通過富文本或自然語言形式對生成語音的情感和韻律進行細粒度控制,使生成的語音更加生動自然。
  2. 語音合成算法原理
    (1) 文本分析:對輸入的文本進行深入分析,包括詞匯、語法、語義理解,識別文本中的關鍵詞、短語結構以及語義關系,為后續的語音參數生成提供基礎。例如分析句子“今天天氣真好”,確定“今天”是時間詞,“天氣真好”表達積極的天氣狀況描述。
    (2) 聲學模型:根據文本分析結果,結合聲學知識,預測生成語音所需的聲學參數,如基頻、共振峰、時長等,這些參數決定了語音的音高、音色和語速等特征。
    (3) 波形生成:利用預測得到的聲學參數,通過特定的算法生成語音波形,最終轉化為可播放的音頻信號。

3. 代碼實現

3.1開通服務并獲取 API - KEY

(1) 百度搜索阿里云
(2) 注冊賬號
在這里插入圖片描述

3)擊右側控制臺
在這里插入圖片描述
(4) 點擊左邊導航搜索向量檢索服務DashVector
在這里插入圖片描述
(5) 在Cluster列表中,點擊創建Cluster
在這里插入圖片描述
(6) 在API-KEY管理中,創建自己的API-KEY密鑰
在這里插入圖片描述

3.2將獲取的 API - KEY配置到環境變量

(1) 在Windows系統桌面中按Win+Q鍵,在搜索框中搜索編輯系統環境變量,單擊打開系統屬性界面。
(2) 在系統屬性窗口,單擊環境變量,然后在系統變量區域下單擊新建,變量名填DASHSCOPE_API_KEY,變量值填入您的DashScope API Key。
(3) 依次單擊三個窗口的確定,關閉系統屬性配置頁面,完成環境變量配置。
(4) 打開CMD(命令提示符)窗口或Windows PowerShell窗口,執行如下命令檢查環境變量是否生效。
在這里插入圖片描述
CMD查詢命令:echo %DASHSCOPE_API_KEY%
在這里插入圖片描述

3.3 安裝最新版 SDK

通過運行以下命令安裝DashScope Python SDK:pip install -U dashscope
在這里插入圖片描述
當終端出現Successfully installed … dashscope-x.x.x的提示后,表示您已經成功安裝DashScope Python SDK。

3.4 安裝需要的庫

(1) 首先需要創建虛擬環境
(2) 在搜索欄中輸入Windows PowerShell,以 管理員身份 運行(避免權限問題)。
(3) 創建一個新虛擬環境,名字為py39_env(可以自己改)。
在這里插入圖片描述
(4) 激活環境。
在這里插入圖片描述
(5) 安裝需要的庫
在這里插入圖片描述

3.5運行代碼

若沒有將API Key配置到環境變量中,需將下面這行代碼注釋放開,并將apiKey替換為自己的API Key——# dashscope.api_key = “apiKey”

import pyaudio
import dashscope
from dashscope.audio.tts_v2 import *from http import HTTPStatus
from dashscope import Generation# 若沒有將API Key配置到環境變量中,需將下面這行代碼注釋放開,并將apiKey替換為自己的API Key
# dashscope.api_key = "apiKey"
model = "cosyvoice-v1"
voice = "longxiaochun"class Callback(ResultCallback):_player = None_stream = Nonedef on_open(self):print("websocket is open.")self._player = pyaudio.PyAudio()self._stream = self._player.open(format=pyaudio.paInt16, channels=1, rate=22050, output=True)def on_complete(self):print("speech synthesis task complete successfully.")def on_error(self, message: str):print(f"speech synthesis task failed, {message}")def on_close(self):print("websocket is closed.")# stop playerself._stream.stop_stream()self._stream.close()self._player.terminate()def on_event(self, message):print(f"recv speech synthsis message {message}")def on_data(self, data: bytes) -> None:print("audio result length:", len(data))self._stream.write(data)def synthesizer_with_llm():callback = Callback()synthesizer = SpeechSynthesizer(model=model,voice=voice,format=AudioFormat.PCM_22050HZ_MONO_16BIT,callback=callback,)messages = [{"role": "user", "content": "請介紹一下你自己"}]responses = Generation.call(model="qwen-turbo",messages=messages,result_format="message",  # set result format as 'message'stream=True,  # enable stream outputincremental_output=True,  # enable incremental output )for response in responses:if response.status_code == HTTPStatus.OK:print(response.output.choices[0]["message"]["content"], end="")synthesizer.streaming_call(response.output.choices[0]["message"]["content"])else:print("Request id: %s, Status code: %s, error code: %s, error message: %s"% (response.request_id,response.status_code,response.code,response.message,))synthesizer.streaming_complete()print('requestId: ', synthesizer.get_last_request_id())if __name__ == "__main__":synthesizer_with_llm()

4.參考鏈接

https://help.aliyun.com/zh/model-studio/user-guide/text-to-speech?spm=a2c4g.11186623.help-menu-2400256.d_1_0_4.53e247bbJYVV91&scm=20140722.H_2842586._.OR_help-T_cn~zh-V_1
(點擊CosyVoice的將LLM生成的文本實時轉成語音并通過揚聲器播放模塊,點擊Python運行的代碼進行復制。)

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

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

相關文章

Ubuntu軟件包離線下載安裝

1、下載軟件包tcpd,并在/var/cache/apt/archives目錄中查看。 rooteducoder:~# apt-get install -d tcpd Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed:tcpd …

您的數據是如何出現在暗網上的?

暗網是互聯網上的一個隱秘角落,人們可以在那里保持匿名。暗網經常與深網混淆,但它們并不完全相同。 深網是指網絡上所有未被搜索引擎索引的內容。這包括電子郵件帳戶、私人數據庫和付費服務等。這并不違法,只是無法通過簡單的 Google 搜索找…

原型模式及其應用

引言 原型模式(Prototype Pattern)是一種創建型設計模式,它允許通過復制現有對象來創建新對象,而無需通過構造函數來創建。這種模式通過克隆現有對象來創建新對象,從而避免了復雜的初始化過程。本文將探討原型模式的好…

thinkphp漏洞再現

Thinkphp5x遠程命令執行及getshell 1、開環境 2、使用工具攻擊 開啟工具 輸入地址,點擊漏洞檢測 存在漏洞之后,選擇漏洞,執行命令 3、也可以執行遠程命令 執行命令 ?sindex/think\app/invokefunction&functioncall_user_func_array&…

Day16 -實例:Web利用郵箱被動繞過CDN拿真實ip

本想測試一下全局ping,剛好注冊的時候收到了郵件,剛好去做一下復現。 原理:主動讓對方站點給我們發郵件(注冊、修改密碼、訂閱推送等)我們查看郵件原文,原文里存在真實的郵件站點ip 特點:郵件…

vue3 數據監聽(watch、watchEffect)

1、watch 1.1基本使用 作用:數據監聽 語法: watch(監聽的數據, (改變后的數據, 改變前的數據) > { console.log(newVal, oldVal); }) 注意點:watch寫法上支持一個或者多個監聽源,這些監聽源必須只能是getter/effect函數…

網盤解析工具更新,解決了一些bug

解析工具v1.2.1版本更新,本次是小版本更新,修復了一些bug。 之前小伙伴反應的網盤進入文件后不能返回上一級,現在這個bug修復了,已經可以點擊了。 點擊資源后會回到資源那一級目錄,操作上是方便了不少。 增加了檢查自…

推薦1款簡潔、小巧的實用收音機軟件,支持手機和電腦

聊一聊 沒想到現在還有人喜歡聽廣播。 我一直以為聽廣播必須要用那種小廣播機才可以。 原來手機或電腦上也是可以的。 今天給大家分享一款可以在電腦和手機上聽廣播的軟件。 軟件介紹 龍卷風收音機 電臺廣播收音機分電腦和手機兩個版本。 電腦端無需安裝,下載…

六十天前端強化訓練之第三十一天之Webpack 基礎配置 大師級講解(接下來幾天給大家講講工具鏈與工程化)

歡迎來到編程星辰海的博客講解 看完可以給一個免費的三連嗎,謝謝大佬! 目錄 一、Webpack 核心概念解析 二、實戰:多資源打包配置(含完整代碼) 三、配置深度解析(重點部分說明) 四、效果演示…

機器學習——Bagging、隨機森林

相比于Boosting的集成學習框架,Bagging(Bootstrap Sampling,自助聚集法,又稱為自助采樣)作為一種自助聚集且并行化的集成學習方法,其通過組合多個基學習器的預測結果來提高模型的穩定性和泛化能力。其中隨機森林是Bagging學習框架…

【藍橋杯】每日練習 Day13

前言 今天做了不少題,但是感覺都太水了,深思熟慮之下主播決定拿出兩道相對不那么水的題來說一下(其實還是很水)。 兩道問題,一道是日期問題(模擬),一道是區間合并問題。 日期差值 …

HTML輸出流

HTML 輸出流 JavaScript 中**「直接寫入 HTML 輸出流」**的核心是通過 document.write() 方法向瀏覽器渲染過程中的數據流動態插入內容。以下是詳細解釋&#xff1a; 一、HTML 輸出流的概念 1. 動態渲染過程 HTML 文檔的加載是自上而下逐行解析的。當瀏覽器遇到 <script&…

理解文字識別:一文讀懂OCR商業化產品的算法邏輯

文字識別是一項“歷久彌新”的技術。早在上世紀初&#xff0c;工程師們就開始嘗試使用當時有限的硬件設備掃描并識別微縮膠片、紙張上的字符。隨著時代和技術的發展&#xff0c;人們在日常生活中使用的電子設備不斷更新換代&#xff0c;文字識別的需求成為一項必備的技術基礎&a…

開源模型應用落地-語音轉文本-whisper模型-AIGC應用探索(五)

一、前言 在上一節中&#xff0c;學習了如何使用vLLM來部署Whisper-large-v3-turbo模型。不過&#xff0c;在實際使用時&#xff0c;模型一次只能處理30秒的音頻。今天&#xff0c;將結合實際業務&#xff0c;介紹如何處理一段完整的音頻&#xff0c;并生成相應的字幕文件。 相…

“十五五”時期航空彈藥發展環境分析

1&#xff0e;“十五五”時期航空彈藥發展環境分析 &#xff08;標題&#xff1a;小二號宋體居中&#xff09; 一、建言背景介紹 &#xff08;一級標題&#xff1a;黑體三號&#xff0c;首行空兩格&#xff09; 航空彈藥作為現代戰爭的核心裝備&#xff0c;其發展水平直接關乎…

IDEA批量替換項目下所有文件中的特定內容

文章目錄 1. 問題引入2. 批量替換項目下所有文件中的特定內容2.1 右鍵項目的根目錄&#xff0c;點擊在文件中替換2.2 輸入要替換的內容 3. 解決替換一整行文本后出現空行的問題4. 增加篩選條件提高匹配的精確度 更多 IDEA 的使用技巧可以查看 IDEA 專欄&#xff1a; IDEA 1. 問…

藍橋杯 臨時抱佛腳 之 二分答案法與相關題目

二分答案法&#xff08;利用二分法查找區間的左右端點&#xff09; &#xff08;1&#xff09;估計 最終答案可能得范圍 是什么 &#xff08;2&#xff09;分析 問題的答案 和 給定條件 之間的單調性&#xff0c;大部分時候只需要用到 自然智慧 &#xff08;3&#xff09;建…

學習爬蟲的第二天——分頁爬取并存入表中

閱讀提示&#xff1a;我現在還在嘗試爬靜態頁面 一、分頁爬取模式 以豆瓣Top250為例&#xff1a; 基礎url:豆瓣電影 Top 250https://movie.douban.com/top250 分頁參數:?start0&#xff08;第一頁&#xff09;、?start25&#xff08;第二頁&#xff09;等 每頁顯示25條數…

第 8 章:使用更好的庫_《C++性能優化指南》_notes

使用更好的庫 第八章核心知識點解析編譯與測試建議總結優化原則重點內容&#xff1a;第一部分&#xff1a;多選題&#xff08;10題&#xff09;第二部分&#xff1a;設計題答案與解析多選題答案&#xff1a;設計題答案示例&#xff08;部分&#xff09;&#xff1a; 測試用例設…

RabbitMQ 學習整理1 - 基礎使用

項目代碼&#xff1a;RabbitMQDemo: 學習RabbitMQ的一些整理 基本概念 RabbitMQ是一種基于AMQP協議的消息隊列實現框架RabbitMQ可以用于在系統與系統之間或者微服務節點之間&#xff0c;進行消息緩存&#xff0c;消息廣播&#xff0c;消息分配以及限流消峰處理RabbitMQ-Serve…