AI 声音:数字音频、语音识别、TTS 简介与使用示例
在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR
)到文本转语音(TTS
),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导航等应用无处不在。
数字音频
音频是声音的“数字化”。声音本质上是空气中振动的波,这些波的振动被麦克风捕捉后转化为电信号。接着,这些信号会通过采样和量化存储为数字数据。
如上图所示。声波最开始是一个连续的模拟信号,然后经过特定频率的采样得到采样点(比如采样频率 48kHz 就是将每秒切割为 48k 个采样点),再通过量化处理得到二进制数据(如果量化位数是 16 位,则表示每个采样点存储为 16 bit 即 2 个字节),最后将元数据(如采样率、量化位数、声道数量等)和采样点二进制数据组合起来就得到了音频文件(比如 WAV 或 MP3)。
ASR 语音识别
语音识别(Automatic Speech Recognition
,ASR
)是将语言转化为文字的技术。
传统方法
早期的 ASR
系统主要依赖基于统计的模型,如:
- 声学模型(Acoustic Model):将音频信号转换为声学特征,如 MFCC(梅尔频率倒谱系数)。
- 语言模型(Language Model):使用统计方法预测文字序列的概率。
- 解码器(Decoder):结合声学和语言模型,将声学特征映射到最可能的文字序列。
这些方法需要大量手工设计的特征和规则,性能受限于数据量和语言模型的复杂度。
深度学习
现代 ASR
系统主要基于深度学习,使用端到端(End-to-End)方法,直接从音频输入到文本输出。
如果将 AI 模型看作一个黑盒,那么训练过程就是输入 <音频, 文本> 数据对,让模型自动学习输入和输出之间的映射关系。经过训练后,模型便可以对新的音频进行推理,生成对应文本。
这种描述是一个高度抽象的视角,背后实际上是一个复杂的过程,比如 OpenAI Whisper
:
实践证明,基于深度学习方法训练出来的模型具有更好的鲁棒性、准确性和泛化能力。
OpenAI Whisper
使用示例:
import whisper# 加载模型,默认存储位置 ~/.cache/whisper,可以设置 download_root 改变路径
model = whisper.load_model("base", download_root="root_dir")# 将音频转换为文本
result = model.transcribe("audio.mp3")
print(result["text"])
你也可以使用 whisper.cpp
,一个使用 C/C++ 编写的 OpenAI Whisper
的高性能版本。
TTS 文本转语言
文本转语音(Text-to-Speech
,TTS
)技术则是将输入文本转化为自然流畅的语音。
从某种抽象的角度来看,TTS
(文本转语音)可以被视为语音识别(ASR
)的“反过程”,两者都涉及将一种形式的数据(音频或文本)映射到另一种形式,并且现代都采用深度学习模型,通常基于 Transformer
或类似架构,但在某些技术实现(比如中间表示、损失函数、特征表示、目标优化等)和复杂度上并非完全对称。
TTS
示例如下(使用的是 HuggingFace
上的 OuteAI/OuteTTS-0.2-500M
模型):
import outettsmodel_config = outetts.HFModelConfig_v1(model_path="OuteAI/OuteTTS-0.2-500M",language="en", # Supported languages in v0.2: en, zh, ja, ko
)interface = outetts.InterfaceHF(model_version="0.2", cfg=model_config)# Optional: Load speaker from default presets
interface.print_default_speakers()
speaker = interface.load_default_speaker(name="male_1")output = interface.generate(text="""Speech synthesis is the artificial production of human speech.A computer system used for this purpose is called a speech synthesizer,and it can be implemented in software or hardware products.""",# Lower temperature values may result in a more stable tone,# while higher values can introduce varied and expressive speechtemperature=0.1,repetition_penalty=1.1,max_length=4096,speaker=speaker,
)output.save("output.wav")
声音克隆
每个人的声音都有独特的特性,比如音调高低、响度、停顿、语气等等,声音克隆就是分析并提取一个人的声音特征,将这些特征参数化(通常表示为高维向量)。特征提取本身没有多大实际用途,为了让这些特征发挥作用,声音克隆通常与 TTS
(文本转语音)技术结合,融合克隆的声音特征,将文本生成为与克隆声音相似的语音。
不少 TTS
模型也会直接支持声音克隆的功能,如何调用则取决于具体的模型。例如上例中的 OuteAI/OuteTTS-0.2-500M
模型可以输入一段音频创建具有该音频特征的 speaker:
# Optional: Create a speaker profile (use a 10-15 second audio clip)
speaker = interface.create_speaker(audio_path="path/to/audio/file",transcript="Transcription of the audio file."
)
总结
语音技术作为 AI
应用中的重要分支,正在改变人机交互的方式。从基础的数字音频处理到 ASR
和 TTS
技术的成熟,再到声音克隆赋予 AI
个性化表达能力,这些技术不仅满足了自动化需求,还为虚拟助手、娱乐、医疗、教育等领域带来了创新可能性。希望本文的介绍能为你打开探索 AI 声音领域的大门!
(我是凌虚,关注我,无广告,专注技术,不煽动情绪,欢迎与我交流)
参考资料:
- https://github.com/openai/whisper
- https://huggingface.co/OuteAI/OuteTTS-0.2-500M
相关文章:

AI 声音:数字音频、语音识别、TTS 简介与使用示例
在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR)到文本转语音(TTS),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导…...

【论文速读】| 人工智能驱动的网络威胁情报自动化
基本信息 原文标题:AI-Driven Cyber Threat Intelligence Automation 原文作者:Shrit Shah, Fatemeh Khoda Parast 作者单位:加拿大圭尔夫大学计算机科学学院 关键词:网络威胁情报,AI自动化,攻击技术和…...
什么是域名监控?
域名监控是持续跟踪全球域名系统(DNS)中变化以发现恶意活动迹象的过程。组织可以对其拥有的域名进行监控,以判断是否有威胁行为者试图入侵其网络。他们还可以对客户的域名使用这种技术以执行类似的检查。 你可以将域名监控比作跟踪与自己实物…...

vue3 发送 axios 请求时没有接受到响应数据
<script setup> import Edit from ./components/Edit.vue import axios from axios import { onMounted,ref } from vue// TODO: 列表渲染 //装数据的列表 const list ref([]) const count ref(0) const getList async () > {//通过发送 /list 请求从后端拿到列表数…...
前端使用fontfaceobserver库实现字体设置
要使用FontFaceObserver来加载设置项目本地的字体,先确保字体文件位于项目中或者可以从服务端获取到,这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步: npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...
【人工智能】Python常用库-PyTorch常用方法教程
PyTorch 是一个强大的开源深度学习框架,以其灵活性和动态计算图而广受欢迎。以下是 PyTorch 的详细教程,涵盖从基础到实际应用的使用方法。 1. 安装与导入 1.1 安装 PyTorch 访问 PyTorch 官方网站,根据系统、Python 版本和 CUDA 支持选择安…...

Android Studio安装TalkX AI编程助手
文章目录 TalkX简介编程场景 TalkX安装TalkX编程使用ai编程助手相关文章 TalkX简介 TalkX是一款将OpenAI的GPT 3.5/4模型集成到IDE的AI编程插件。它免费提供特定场景的AI编程指导,帮助开发人员提高工作效率约38%,甚至在解决编程问题的效率上提升超过2倍…...

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

gitlab自动打包python项目
现在新版的gitlab可以不用自己配置runner什么的了 直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法 首先写.gitlab-ci.yml文件,放到项目根目录里 stages: # List of stages for jobs, and their or…...

残差神经网络
目录 1. 梯度消失问题 2. 残差学习的引入 3. 跳跃连接(Shortcut Connections) 4. 恒等映射与维度匹配 5. 反向传播与梯度流 6. 网络深度与性能 总结 残差神经网络的原理是基于“残差学习”的概念,它旨在解决深度神经网络训练中的梯度消…...

mini-spring源码分析
IOC模块 关键解释 beanFactory:beanFactory是一个hashMap, key为beanName, Value为 beanDefination beanDefination: BeanDefinitionRegistry,BeanDefinition注册表接口,定义注册BeanDefinition的方法 beanReference:增加Bean…...

黑马程序员Java项目实战《苍穹外卖》Day01
苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一…...

uniapp开发支付宝小程序自定义tabbar样式异常
解决方案: 这个问题应该是支付宝基础库的问题,除了依赖于官方更新之外,开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar,这样即使 tabBar 被渲染出来,但从视觉上也不会有问题 1.官方文…...

python+django5.1+docker实现CICD自动化部署springboot 项目前后端分离vue-element
一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…...

python代码示例(读取excel文件,自动播放音频)
目录 python 操作excel 表结构 安装第三方库 代码 自动播放音频 介绍 安装第三方库 代码 python 操作excel 表结构 求出100班同学的平均分 安装第三方库 因为这里的表结构是.xlsx文件,需要使用openpyxl库 如果是.xls格式文件,需要使用xlrd库 pip install openpyxl /…...
【第十课】Rust并发编程(一)
目录 前言 Fork和Join 前言 本节会介绍Rust中的并发编程,并发编程在编程中是提升cpu使用率的一大利器,通过多线程技术提升效率,Rust的并发和其他编程语言的并发不同的地方在于,Rust号称无畏并发。更重要的一点是安全。Rust中所有…...
图形渲染性能优化
variable rate shading conditional render 设置可见性等, 不需要重新build command buffer indirect draw glMultiDraw* - 直接支持多次绘制glMultiDrawIndirect - 间接多次绘制multithreading 多线程录制 实例化渲染 lod texture array 小对象剔除 投影到…...

elasticsearch的索引模版使用方法
5 索引模版⭐️⭐️⭐️⭐️⭐️ 索引模板就是创建索引时要遵循的模板规则索引模板仅对新创建的索引有效,已经创建的索引并不受索引模板的影响 5.1 索引模版的基本使用 1.查看所有的索引模板 GET 10.0.0.91:9200/_index_template2.创建自定义索引模板 xixi &…...

论文学习——进化动态约束多目标优化:测试集和算法
论文题目:Evolutionary Dynamic Constrained Multiobjective Optimization: Test Suite and Algorithm 进化动态约束多目标优化:测试集和算法(Guoyu Chen ,YinanGuo , Member, IEEE, Yong Wang , Senior Member, IEEE, Jing Liang , Senior …...
C++中的volatile关键字
作用: 1.它用于修饰变量,告知编译器该变量的值可能会在程序的外部被改变,编译器不能对这个变量的访问进行优化。这是因为编译器通常会对代码进行优化,例如把变量的值缓存到寄存器中,但对于 volatile 变量,…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

运动控制--BLDC电机
一、电机的分类 按照供电电源 1.直流电机 1.1 有刷直流电机(BDC) 通过电刷与换向器实现电流方向切换,典型应用于电动工具、玩具等 1.2 无刷直流电机(BLDC) 电子换向替代机械电刷,具有高可靠性,常用于无人机、高端家电…...
TI德州仪器TPS3103K33DBVR低功耗电压监控器IC电源管理芯片详细解析
1. 基本介绍 TPS3103K33DBVR 是 德州仪器(Texas Instruments, TI) 推出的一款 低功耗电压监控器(Supervisor IC),属于 电源管理芯片(PMIC) 类别,主要用于 系统复位和电压监测。 2. …...
win11部署suna
参考链接 项目链接 沙盒链接 数据库链接 本文介绍 本文只为项目的辅助,手把手太麻烦 执行步骤 1.下载代码 git clone https://github.com/kortix-ai/suna.git cd suna2.配置环境(在Anaconda Prompt上执行) python setup.py3.运行代码 …...