文字语音相互转换

news/2025/2/26 0:27:57

目录

1.介绍

2.思路

3.安装python包

3.程序:

4.运行结果


1.介绍

当我们使用一些本地部署的语言模型的时候,往往只能进行文字对话,这一片博客教大家如何实现语音转文字和文字转语音,之后接入ollama的模型就能进行语音对话了。

2.思路

使用离线本地语音:pyttsx3实现文字转语言,然后使用whisper实现语音转文字

3.安装python包

pip install pyttsx3

pip install whisper
  • 文字转语音 (TTS)
    • 使用 pyttsx3 将输入文本转换为音频文件 output.wav
    • pyttsx3 生成的语音文件是本地生成的,不依赖于网络。
  • 语音转文字 (STT)
    • 使用 Whisper 模型将 output.wav 文件中的语音转录为文字。
    • Whisper 通过 PyTorch 在本地运行,不需要外部网络访问。

3.程序:

import pyttsx3
import whisper
import os

# 文字转语音(TTS)部分
def text_to_speech(text, output_file="语音文字相互转换/output.wav"):
    # 初始化 pyttsx3 引擎
    engine = pyttsx3.init()

    # 设置语速和音量
    engine.setProperty('rate', 150)    # 语速
    engine.setProperty('volume', 1.0)  # 音量

    # 将文本保存为音频文件
    engine.save_to_file(text, output_file)

    # 运行并生成语音文件
    engine.runAndWait()

    print(f"Text-to-Speech conversion complete! Audio saved as '{output_file}'.")

# 语音转文字(STT)部分
def speech_to_text(input_file):
    # 加载 Whisper 模型
    model = whisper.load_model("base")

    # 转录音频文件
    result = model.transcribe(input_file)

    # 打印转录的文本
    print("Transcribed Text:", result["text"])

# 主函数
if __name__ == "__main__":
    # 1. 输入文本
    text = "hello,today is a good day!"

    # 2. 文字转语音
    text_to_speech(text, output_file="语音文字相互转换/output.wav")

    # 3. 语音转文字
    speech_to_text("语音文字相互转换/output.wav")

4.运行结果


http://www.niftyadmin.cn/n/5866993.html

相关文章

【LeetCodehHot100_0x01】

LeetCodeHot100_0x01 1. 两数之和 解题思路&#xff1a; 暴力枚举法、哈希法 【暴力枚举】 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for(int i0;i<n;i) {for(int ji1;j<n;j) {if(nums[i] nums[j] target) {return new in…

第9章:LangChain结构化输出-示例5(基于大模型如何精确匹配POJO的字段)

如何使用LangChain4j框架创建和使用多种AI服务。它通过定义接口和注解,将自然语言处理任务(如情感分析、数字提取、日期提取、POJO提取等)封装为服务,并通过LangChain4j的AiServices动态生成这些服务的实现。 本章主要讲述基于LangChain调用大模型如何进行结构化输出的真实…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说&#xff0c;APP更新功能再常见不过了&#xff0c;因为平台更新审核时间较长&am…

【数据库】【MySQL】索引

MySQL中索引的概念 索引&#xff08;MySQL中也叫做"键&#xff08;key&#xff09;"&#xff09;是一种数据结构&#xff0c;用于存储引擎快速定找到记录。 简单来说&#xff0c;它类似于书籍的目录&#xff0c;通过索引可以快速找到对应的数据行&#xff0c;而无需…

QT中日志的使用案例 || 自动创建、管理、保存QT日志数据

目录 1.quiwidget.cpp 2.widget.cpp 3.widget.h 4.在需要记录日志的地方直接将信息插入即可 1. 释放 m_fileLog 和 m_textStream 1.1 为什么要关闭和删除 m_fileLog 和 m_textStream&#xff1f; 1.2 如果不这样做会有什么坏处&#xff1f; 3. 总结 4.参考文章 需求分析…

整数二分算法

例题&#xff1a; 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返回 -1 -1。 输入格式 第一行…

5G网络切片辨析(eMBB,mMTC,uRLLC)

URLLC有三大应用场景&#xff0c;分别是eMBB&#xff08;增强型移动宽带&#xff09;、uRLLC&#xff08;高可靠低延时通信&#xff09;和mMTC&#xff08;海量机器通信&#xff09;。 增强型移动宽带&#xff08;eMBB&#xff09;&#xff1a;需要关注峰值速率&#xff0c;容…

【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵

GESP二级真题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3955/ 【GESP】C二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵 | OneCoderGESP二级真题&#xff0c;多层循环、分支…