matlab实现声音录制与左右声道分离

news2024/11/17 9:31:21

基础知识

1.MATLAB识别的常用语音信号类型:

        WAV格式

        TXT格式

2.读取wav格式语音用函数:wavread

    常用格式:

      y=wavread(‘语音文件名’)

      [y,fs]=wavread (‘语音文件名’)

用于读取语音,采样值放在向量y中,fs表示采样频率。

3.读取wav格式语音用函数:audioread

   常用格式:

    [y,fs]=audioread (‘语音文件名’)

   用于读取语音,采样值放在向量y中,fs表示采样频率。

4.语音信号重采样函数:resample

格式:

       s=resample(s1,fs,fs1),

将采样率为fs1的s1的信号变成采样率为fs的s信号,而信号的大致形状不变。

5.读取txt格式的语音用函数:

   fopen——  打开文件

   fscanf—— 读取文件中数据

常用语法格式

   fid = fopen(‘语音文件.txt’)

     e = fscanf(fid,'%f');

6.单声道和双声道语音

声音文件有单声道和双声道,MATLAB如何区分单声道和双声道语音。

将语音信号读入到内存,借助“whos”命令在MATLAB工作空间查看存放语音信号变量的属性来区分。

7.双声道分离成单声道

[x,fs]=wavread(‘a123.wav’);

              (a123.wav是一个双声道语音)

分离的方法:

    left=x( : ,1);    %取变量”x”的第一列所有值

   right=x( : ,2);  %取变量”x”的第二列所有值

分离的声道单独存储

      [x,fs]=wavread('a123.wav');

left=x(:,1);           % 抽取第 1 声道

right=x(:,2);        % 抽取第 2 声道

wavwrite(left,fs,'left.wav');

                   % 实现1声道保存为语音文件

wavwrite(right,fs,'right.wav');

                    % 实现2声道保存为语音文件

如果是使用 audioread函数读取语音信号,在将分离的声道信息存储为语音文件,需要按如下格式书写:  audiowrite(filename,y,fs)

   (说明:filename-存储的语音文件名

                 y-存储分离的声道变量名

                 fs-采样频率)

声道分离是利用了MATLAB 的矩阵抽取运算。

声道合并利用了矩阵重组运算。

             x_new=[left,right];

代码如下:

clc;clear
[x,fs]=audioread('123.wav'); 
whos
left=x(:,1);           % 抽取第 1 声道
right=x(:,2);        % 抽取第 2 声道
audiowrite('left.wav',left,fs);  % 实现1声道保存为语音文件
audiowrite('right.wav',right,fs); 
                    % 实现2声道保存为语音文件

结果如下:

分离前:

分离后

 

 

9.声音的录制

录制时发现使用matlab录制的声音仅有一个声道(即n*1)矩阵,但在手机上录制的声音使用matlab上处理时,为双声道,原理倒是没有细查,哈哈哈哈

录制的代码如下

Fs=44800;%麦克分采样率
nBits=16;%量化位数
nChannel=1;%录音的通道数,可以设置1或者2
time=5;%录制音频的时间,单位是秒
recObj = audiorecorder(Fs, nBits, nChannel);
disp('Start speaking.')%开始录制声音
recordblocking(recObj, time);
disp('End of Recording.');% 回放录音数据
play(recObj);% 获取录音数据
myRecording = getaudiodata(recObj);% 绘制录音数据波形
plot(myRecording);%存储语音信号
filename = 'audiorecorder_data_1.wav'; 
audiowrite(filename, myRecording, Fs);

10.将该语音转换成TXT文件

可看成保存矩阵

clc;clear
 
[x,fs]=audioread('audiorecorder_data_1.wav'); 
[x,fs]=audioread('玫瑰少年.wav'); 
 
left=x(:,1);           % 抽取第 1 声道
right=x(:,2);        % 抽取第 2 声道
audiowrite('left.wav',left,fs); % 实现1声道保存为语音文件
audiowrite('right.wav',right,fs);  % 实现2声道保存为语音文件
 
  x_new=[left,right];
  save afile.txt -ascii x_new

使用  save afile.txt -ascii x_new将体现语音信号的矩阵保存为txt文件

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态代理与Spring Aop

动态代理 JDK 动态代理 使用JAVA反射包中的类和接口实现动态代理的功能,JAVA.lang.reflect包;主要是三个类: InvocationHandler,Method,Proxy; CGLIB动态代理,第三方工具类库,创建代理对象,cglib的原理是继…

城市内涝监测需要什么设备

近年来,随着城市化进程的加快,城市内涝问题愈发突出。强降雨、缺乏排水设施和过度的人类活动等因素,导致城市内涝灾害频发。内涝不仅给居民生活和财产安全带来威胁,还对城市基础设施和经济发展造成严重影响。 为了应对城市内涝灾…

spring中事务失效的情况(常见的5种)

1.多线程调用 从上面的例子中,我们可以看到事务方法add中,调用了事务方法doOtherThing,但是事务方法doOtherThing是在另外一个线程中调用的。 这样会导致两个方法不在同一个线程中,获取到的数据库连接不一样,从而是两…

centos7宝塔项目配置步骤

0、 1、 2、前面两个空格去掉勾 3、window 配置虚拟机 对应的域名

Django高级扩展之celery使用

Celery是一个简单、灵活、可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。是一个专注于实时处理的任务队列,同时还支持任务调度。 目录 应用场景 问题 解决 celery架构图 安装 配置celery Settings.py配置…

CVE-2022-25099

文章目录 CVE-2022-25099一、漏洞介绍二、渗透步骤1、打开网站2、登录后台3、文件上传4、查看flag值 CVE-2022-25099 一、漏洞介绍 WBCE CMS v1.5.2 RCE。 WBCE CMS v1.5.2 /language/install.php 文件存在漏洞,攻击者可精心构造文件上传造成RCE。 二、渗透步骤 1…

宝塔面板实用教程(1):10分钟部署在线客服系统

客服系统发布以来,一直有朋友询问如何在宝塔面板中安装部署,开始我一直认为参考 Linux 版的安装教程就可以了,一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多,经过了解,我才知道宝塔面板的普及率有多高&…

SSM流浪动物救助网站-计算机毕设 附源码82131

SSM流浪动物救助网站 摘 要 随着生活水平的持续提高和家庭规模的缩小,宠物已经成为越来越多都市人生活的一部分,随着宠物的增多,流浪的动物的日益增多,中国的流浪动物领养和救助也随之形成规模,同时展现巨大潜力。本次…

XML文件

xml文件 类似于html那种标签语言 但是用途却大不一样,xml一般用于小型数据传输(存储数据) xml文件作用 xml语法规则 一个简单的xml文件案例 xml解析 解析思想 所谓的xml解析 也就是从xml文件提取数据 解析思想:前端的文档对…

【C++实现】RPC框架的简单实现介绍

文章目录 介绍为什么使用protobufprotobuf的service rpc 框架发布方的上层使用逻辑框架的提供方逻辑Rpc调用方框架实现客户端上层框架使用重新梳理简单聊一下RpcController 引入缓冲区队列zookeeper总结 介绍 以下博客覆盖内容: 集群和分布式概念原理; …

安科瑞智能照明系统在绿色建筑中的应用与产品选型

【摘要】:智能照明系统应用在智能建筑中不仅能营造出舒适的生活、工作环境以及现代化的管理方式而且要具有一定的节能效果。给出了智能照明和传统照明系统的比较并分析了智能照明系统的节能。 【关键字】:智能建筑;智能照明;节能…

什么样的口译是好的?交传和同传的评估标准是什么?

众所周知,交传和同传是口译的两种高级形式,难度比较大,一般应用于国际会议、商务洽谈、重大新闻发布会等领域。那么,如何做好交传和同传翻译,什么样的口译是好的,交传和同传的评估标准是什么,北…

密码学obe软件思路

匿名通信与暗网研究综述 匿名通信系统是一种建立在Internet之上综合利用数据转发、内容加密、流量混淆等多种技术隐藏通信实体关系和内容的覆盖网络.由于匿名通信主体难以被追踪定位,匿名通信网络中各类匿名滥用问题层出不穷,而其中隐藏服务机制更是被用于构建充斥着各种非法…

Integer移位算法

常用移位算法 给定值最高位1的权重给定值最低位1的权重给定值高位连续零的个数给定值低位连续零个数 给定值最高位1的权重 也就是给定值左侧。返回给定值左侧最大的2的次幂 //获取i最高位1代表的2次幂,最高位1代表的权值public static int highestOneBit(int i) …

轻量化技术 | 大面积模型秒加载、TB级数据处理能力、多平台便捷展示应用...

实景三维技术的发展日新月异,但在应用上却一直无法深入,尤其是在大场景三维模型展示与应用过程中,不可避免地会遇到占内存、渲染慢、加载卡顿、模型塌陷等情况,这是由于数据格式类型多、内存占比大、模型体量大。 对此&#xff0…

C++ STL关联式容器和无序容器(哈希容器)

文章目录 5.2 C STL关联式容器5.2.1 C STL map容器5.2.2 C STL multimap容器5.2.3 C STL set容器5.2.2 C STL multiset容器 5.3 C STL无序容器(哈希容器) 参考 5.2 C STL关联式容器 关联式容器在存储元素值的同时,会为各元素额外再配备一个值…

让你不再疑惑PDF转Excel怎么操作

你是否曾经遇到过需要编辑PDF表格的情况,但却不知道如何进行转换?不用担心,现在有一些简单的方法可以将PDF表格转换为Excel,让你轻松地编辑和修改表格。如果你还不知道PDF表格转Excel怎么转的话,那么接下来三种实用的小…

摆脱传统模式,快速构建系统只需要7步~

摆脱传统模式,快速构建系统只需要7步~ 首先我们来说说用“低代码开发平台”来进行开发是一种怎样的感受?它可以帮助您更快、更可靠地提供价值。通过在可视化设计器中,以拖拽的方式快速构建应用程序,您可以跳过基础架构以及可能会让…

聚观早报 | TikTok首席运营官离职;AMDR7 7840HS轻薄本开始上市

今日要闻:TikTok首席运营官离职;AMDR7 7840HS轻薄本开始上市;美国5月AI招聘岗位增加约20%;荷兰传最收紧ASML对华出口限制;力斯SERES5完成欧洲首批交付 TikTok首席运营官离职 当地时间 6 月 22 日,TikTok 首…

LangChain 基于 Prompts 提示管理 构建特定领域模型

一、langChain Prompts 上篇文章对 langChain 进行了简单的介绍与使用,可以知道LangChain 是一个由语言模型LLMs驱动的应用程序框架,使用 LangChain 可以极大的降低开发成本,本篇文章主要基于 LangChain 中的 Prompts 提示管理实现特定领域的…