手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)

手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)

前言

前面的篇章中,我们从理论方向和实际市面上出现的音频线传输声音的方式,讨论绕开手机对SIM卡电话通话声音的封锁场景的可行性,并实际选购几款数字和模拟的USB转接3.5mm音频口的转接头和耳机进行测试,验证这个方向对Android手机型号和系统版本的影响和支持力度。

本篇章中,我们尝试从虚拟声卡的角度来构思一下,如何不用任何外置配件的方式,提取到手机或电脑设备中输出的声音数据。

由于GCC编译体系中,Linux、Windows、Android、嵌入式Linux基本不分家,我们可以采用先从电脑版本的Linux或Windows系统中把方案架构和测试工具和测试手段都整理出来后,再尝试将它们移植到Android和嵌入式Linux的方式,进行迁移和验证。进而得出这些方式或方法是否有效、以及是否符合预期要求的评估结论。

什么是虚拟声卡

虚拟声卡是一种软件程序,允许用户在系统中创建一个虚拟的音频设备。通过这个设备,用户可以输入和输出音频数据,而无需依赖物理声卡。虚拟声卡尤其适用于需要音频路由的应用,比如录音软件、在线会议等。

虚拟声卡有什么作用

虚拟声卡主要用在没有声卡的机器上实现声音播放等功能。它是一种软件解决方案,允许计算机在没有硬件音频设备的情况下产生和处理声音。

常见的虚拟声卡的场景有哪些

要说虚拟声卡的常见场景,在云服务器的各种虚拟容器中进行软声卡的安装后再将声音传输到本地播放的场景是我们最常见的虚拟声卡的场景。因为通常在云服务器和云服务器划分的虚拟容器中,是不存在物理声卡的,要想让远程的机器发声或者让容器内依赖声卡工作的软件能正常安装和使用,最简单的方式就是在容器中配置虚拟声卡(可能会包括驱动和内核应用),通过虚拟声卡把声音进行回传或按预制的方式进行处理。

至于Android的虚拟声卡,现在市面上云手机大把,随便一搜到处都是,它们也是在云服务器中分割出一个个容器,然后再上面安装各种软件,把声音传输回本地设备进行播放。从理论上来说,Android的虚拟声卡与普通的远程Windows或Linux中配置的虚拟声卡并不存在本质上的区别。

你看,其实虚拟声卡到处可见,属于老生常谈的应用场景。阳光下并没有多新鲜的事情。

在乌班图(Ubuntu)中配置虚拟声卡

Linux中由于yum源的众所周知的原因,我们一般采用Ubuntu来进行宿主机环境的验证。在Ubuntu中,虚拟声卡通常采用snd-aloop来进行,即通过apt-get install alsa-utils安装了对应工具集后,通过配置/etc/modprobe.d目录下的文件,把虚拟声卡加载到Linux系统当中。在使用的时候,可以使用aplay -l 查阅系统中配置的声卡,并大致如下:

sudo apt-get install alsa-utils

sudo modprobe snd-aloop

lsmod | grep snd_aloop

arecord -l

aplay -l

如果需要虚拟声卡在启动的时候就自动创建,就需要修改/etc/modprobe.d/alsa-base.conf文件,在文件内添加如下一行内容后,运行sudo alsa force-reload命令重启音频服务即可。

# 创建虚拟声卡

options snd-aloop index=0

如果不需要自动创建则不用配置,只需要手动运行sudo modprobe snd-aloop命令即可,如下图所示:

Win/Linux/Android不同平台的声卡的差异

Android和Linux都使用ALSA框架来进行声音音频的调度,对于普通声音而言,二者除了使用的授权上有差异之外,其余方面并无特殊的差异。

Windows方面由于音频驱动架构方式的不同,在部署和使用上存在较大的差异,但Github中本身就存在有开源库Virtual Audio Pipeline,下载地址为:https://github.com/syams86/Virtual-Audio-Pipeline

我们在早些年的篇章中对Windows平台虚拟声卡的使用进行了描述,感兴趣的读者可以自行查阅《电脑蓝牙打电话-总结(篇外、虚拟声卡选型)》电脑蓝牙打电话-总结(篇外、虚拟声卡选型)_vb-audio virtual cable-CSDN博客

虚拟声卡如何测试和检验效果

上述操作中创建的虚拟声卡,都是成对出现的,即同一个声卡card号的device 0 和device 1一个做输入另一个做输出。

在使用中,我们可以简单的对device 0做播放音频文件,然后对device 1进行录音,或者反过来操作,实现声音和通话的全双工通信。如下图所示:

我们在Linux中可以使用【arecord -D hw:1,1,2 -r 采样率 -t wav 文件名】的方式对虚拟声卡进行录制,使用【aplay -D hw:1,0,2 -c 1 -r 采样率 文件名】的方式对虚拟声卡进行播放,实现将文件10086.wav通过虚拟声卡播放并转录到10086_output.wav文件的目的,如下图:

我们将播放的原始文件和转录后的输出文件,使用GoldWave或其它音频播放工具进行打开和查阅,可以很容易看出虚拟声卡的录制是能正常生效的。也即使用此方式在Linux中创建的虚拟声卡,能够正常应用在声音数据的重定向和提取。理论上,此方式也应该能正常迁移到Android系统或嵌入式Linux中,供具有root超级用户权限的应用进行运行和使用。

小结与思考

经过我们对Linux和Ubuntu的一顿命令和文件数据操作,我们很简单的就通过电脑桌面的方式复现了虚拟声卡对媒体应用在声音传输方向的提取和加工操作。当前的计算机世界完全具有完善的方案进行此类普通声音或语音文件的媒体操作能力。

但这里的虚拟声卡其实还有一个最重要的使用场景没有验证:它能传递普通的音乐和铃声等声音,但它能传递电话通话的声音吗?而这才是跟本次主题息息相关的问题。

这个疑问,并非没有先例。安卓手机在同屏共享领域有一个非常知名的开源软件scrcpy,它在针对Android11及以上版本就提供了声音共享的能力,使电脑和手机同屏共享时能把手机播放的声音清晰的从adb传输线中同步到电脑进行播放。但是,打电话时的声音通道无法被共享。

因此,在这一块上,如果我们需要对当前预研的课题进行打电话声音方向上的提取,使用ALSA方式或PulseAudio进行声音数据的提取,需要进行更多和更细致的扩展和适配,并不是看上去的那么简单。


上一篇:手机实时提取SIM卡打电话的信令声音-新的篇章(二、USB音频线初步探索)

下一篇:手机实时提取SIM卡打电话的信令声音-新的篇章(篇外小结与思考)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装fpm,解决*.deb=> *.rpm

要从生成 .deb 包转换为 .rpm 包,可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…

青出于“蓝”的合资第一新能源,“换壳”背后有门道

文/王俣祺 导语:千呼万唤始出来的新能源“马6”终于亮相了,这款马自达EZ-6本以为凭借马自达多年来在国内市场深耕的底蕴可以收获一片支持,但最近却深陷“换壳”风波。那么今天我们就一起看看,这款马自达EZ-6和被冠以“原型”的深蓝…

HT8787B 可任意限幅、内置自适应升压的2x9.0W立体声音频功放

1 特性 ● 可任意配置的限幅功能 自由配置音频限制幅度,使输出音频信号限制在固定失真水平内 ● 内置自动限温控制功能 适应不同散热条件,避免出现过温关断现象 ● 高效自适应G类升压功能,有效延长播放时间 可调节最大限流值,有效…

Ansible基本使用

目录 介绍 安装 inventory-主机清单 分组 子组 modules-模块 command shell script file copy systemd yum get_url yum_repository user mount cron 介绍 ansible是基于python开发的自动化运维工具。架构相对比较简单,仅需通过ssh连接客户机执行…

Java并发常见面试题总结(上)

线程 ⭐️什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程 在 Java 中,当我们启动 main 函数时其实就是启动了一…

38.第二阶段x86游戏实战2-HOOK窗口消息机制(解决多开窗口句柄问题)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

【原创分享】详述中间件的前世今生

中间件是一种软件组件,位于应用程序和操作系统之间,通过提供统一的接口和功能来简化开发和管理应用程序、提高应用程序的可靠性和性能。 中间件的前世可以追溯到20世纪80年代的分布式系统和网络技术的发展。在那个时候,随着计算机网络的普及…

vite+vue3+ts使用vue3-draggable-resizable,可拖动、调整大小的模块库,真的太好用了!

前言:公司业务:在很多地方装了路灯,给路灯做了个管理系统,有管理系统肯定就是增,删,查,改,但是这次改好像有点复杂。给路灯下发指令,可以在路灯的大屏放文字,…

想给视频去背景音乐?简单几步搞定

在数字视频编辑和处理中,去除视频中的背景音乐是一个常见的需求。无论是因为背景音乐与视频内容不符,还是出于版权考虑,掌握视频去背景音乐的方法都显得尤为重要。那么,视频怎么去背景音乐呢?本文将详细介绍几种去除视…

C语言串口接收GPS数据

要在C语言中接收GPS数据,需要使用串口通信来与GPS设备进行数据交互。一个简单的串口通信代码主要包含了以下几个部分: 1.标准库头文件 stdio.h:包含输入输出函数,如 printf string.h:包含字符串处理函数&#xff0c…

深度学习:yolov3的使用--建立模型

使用argparse模块来定义和解析命令行参数 创建一个ArgumentParser对象 parser argparse.ArgumentParser() 训练的轮数,每批图像的大小,更新模型参数之前累积梯度的次数,模型定义文件的路径。 parser.add_argument("--epochs", typeint, d…

smuge error

0 Preface/Foreword 1 解决方法 第一步:跳过大文件下载,到时候统一使用快速批处理fast batch git lfs install --skip-smudge 故意敲错指令,会出现git lfs install 的usage: 第二步:clone仓库 下载结果:…

R语言机器学习与临床预测模型79--机器学习总览

R小盐准备介绍R语言机器学习与预测模型的学习笔记 你想要的R语言学习资料都在这里, 快来收藏关注【科研私家菜】 01 机器学习分类 机器学习模型主要分为有监督、无监督和强化学习方法。 监督学习 监督学习是教师向学生提供关于他们在考试中是否表现良好的反馈。其中…

黑马软件测试第二篇_功能测试

软件质量模型 应用场景:提供对于软件产品从测试角度思考的一种思路 定义:实际实现的产品和需求描述是否相一致,相一致程度高说明质量满足需求(好) 如何评判软件的质量? 功能:软件产品是否具备某…

React 中组件通信的几种主要方式

一、父传子&#xff1a; 1. 传递多个属性 父组件可以通过 props 传递多个属性给子组件。 示例 // 子组件 function Son(props) {return (<div>This is Son, {props.name} - Age: {props.age}</div>); }// 父组件 function App() {const name This is App N…

精华帖分享|如何全方位无死角保护你的交易所账号

本文来源于量化小论坛策略分享会板块精华帖&#xff0c;作者为菊座&#xff0c;发布于2024年3月4日。 以下为精华帖正文&#xff1a; 01 背景 起因是这两周保4赚麻了&#xff0c;看到中性群里大佬们的曲线&#xff0c;大家都想加大仓位&#xff0c;于是我在群里提醒了下大家资…

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前&#xff0c;作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解&#xff0c;晕头转向。 SD卡&#xff1a;Secure Digital Card的英文缩写&#xff0c;直译就是“安全数字卡”。一般用于大一些的电子设备比如&#xff1a;电脑、数码相机、AV…

11月第一篇新作,十一月对我好一点:C++之继承(2)

C之继承&#xff08;2&#xff09; 虚继承 很多⼈说C语法复杂&#xff0c;其实多继承就是⼀个体现。有了多继承&#xff0c;就存在菱形继承&#xff0c;有了菱形继承就有 菱形虚拟继承&#xff0c;底层实现就很复杂&#xff0c;性能也会有⼀些损失&#xff0c;所以最好不要设计…

tiktok批量添加达人怎么弄

在 TikTok 上批量添加达人可以借助一些工具或方法&#xff0c;以下是一些常见的途径&#xff1a; 点我达秘免费体验地址注册 使用达人邀约工具&#xff1a; 功能特点&#xff1a;这类工具专为 TikTok 跨境小店和本土小店提供服务&#xff0c;可以实现多国家、多店铺同时私信和…

重塑重工起重行业未来:网关与云平台携手共创价值新篇章

在重工起重这一传统而关键的工业领域中&#xff0c;技术的每一次革新都意味着生产效率与安全标准的飞跃。随着物联网、大数据、云计算等先进技术的不断渗透&#xff0c;重工起重行业正迎来一场前所未有的智能化变革。其中&#xff0c;网关与云平台的深度融合&#xff0c;正成为…