【文献精读】HeadFi: Bringing Intelligence to All Headphones

2023-05-16

Mobicom 2021文章

文章地址:https://dl.acm.org/doi/10.1145/3447993.3448624

文章目录

  • 1 简述
  • 2 背景
  • 3 headfi实现基础
    • 3.1 耦合效应模型
    • 3.1.1 耳机中声电信号如何转化?
    • 3.1.2 为什么微小电压变化能够作为传感器输入
    • 3.2 精确测量电压 Null Measurement
      • 3.2.1 什么是惠斯通电桥
      • 3.2.2 惠斯通电桥中的C1从何而来?
      • 3.2.3 一对耳机阻抗互为C1可能引发的问题
    • 3.3 电路图
  • 4 基础评估
    • 4.1 直接激励信号测量敏感性测试
    • 4.2 间接激励信号测量敏感性测试
    • 4.3 音频质量测试
  • 5 用户识别
    • 5.1 检测用户是否戴上耳机
    • 5.2 用户身份识别
      • 子实验1
      • 子实验2
      • 子实验3
      • 子实验4
      • 子实验5
  • 6 生理感知
    • 6.1 理论
    • 6.2 实验
      • 子实验1
      • 子实验2
      • 子实验3
  • 7 手势识别
    • 7.1 理论
    • 7.2 实验
  • 8 语音通信
    • 8.1 理论
    • 8.2 实验
      • 8.2.1 客观实验
      • 8.2.2 主观实验

1 简述

headfi 是一个包含硬件+算法的全套系统设计,目的是将没有智能功能的老式耳机拥有智能功能(用户识别、手势控制、生理信号检测、语音通信)。
其创新点主要有两个:
(1)硬件方面使用的是可拔插的板子,要用的时候分别连接耳机和手机就行了,不用从硬件上改造耳机,比较方便。
(2)成本低,比新买一个智能耳机要便宜。

2 背景

对于可穿戴设备来说,耳机占据了很大的市场份额。这几年耳机智能化趋势如火如荼的展开,苹果、三星等著名公司都推出了智能手机。

当前的智能手机主要有如下功能:

  1. 通过算法可以降噪+定制个性化音频
  2. 通过运动感知传感器可以进行手势控制
  3. 通过微型惯性传感器可以检测呼吸、心率等生命体征

以上这些功能都依赖于耳机内置的传感器实现,没有传感器,就没有智能。可是不远的2019年,全年销售的耳机中超过99%没有内置传感器,甚至有43%连麦克风都没有。这就引出了这篇paper想解决的核心问题:
在不改动原有硬件结构的前提下,如何令用户能够使用现有的老式耳机体验智能耳机的各种功能?

如果答案是yes,那么就能实现前所未有的大规模的 earable intelligence, 显然,作者给出的自己的答案,提出了一套叫HeadFi(这是国外的一个耳机发烧友网站)的低功耗+低成本的设计方案,此方案主要由一个可拔插的外设实现(就是一块小板子)。

在这里插入图片描述
headfi区别于现有智能耳机方案的区别为:

  1. 将老式耳机中原有的驱动作为多功能传感器,而不是额外添加传感器
  2. 是一个可拔插设备,不是内嵌的

3 headfi实现基础

headfi通过将原有的两个耳机的驱动变为多功能传感器来检测激励信号,从而实现headfi的智能功能。这里的激励信号指的是“用户将耳机戴上”,“用户触摸了耳机”,“用户说话”等由外界变化产生的对耳机的激励信号

那么如何将耳机驱动变为多功能传感器从而检测激励信号呢?
作为传感器必备的就是输入端口,以及,要使用传感器的话就要明确传感器的输入信号是什么。
理论上很多耳机有一个天然输入端口就是麦克风,就算没有麦克风的耳机也可以将耳机作为麦克风来输入,因为本质上,耳机的扬声器和麦克风都是音频通道。
但是作者却没有直接将麦克风的接收信号作为输入信号,因为:

  1. 对于没有麦克风的耳机来说,由扬声器转化的麦克风性能上不如专门的麦克风,因为耳机中的膜片都是根据播放音频或是录制音频的任务提前校准好的。
  2. 就算有麦克风,由外界变化引起的激励信号很微弱,将被埋没在高了好几个数量级的音频信号中(戴上耳机肯定是要听音乐或者通话,那必然就有音频信号)

既然不能直接使用麦克风采集的信号,作者提出了一种替代方案,那就是通过利用耳机和外部环境的耦合反应并设计一个差分电路来检测微小电压变化。这个微小电压的变化就是传感器的输入信号。

3.1 耦合效应模型

headfi是如何检测激励信号的?
利用耳机和外部环境的coupling effect,即耦合效应。
耳机、耳道和鼓膜会形成一个对压力敏感的半封闭空间,外部触摸+内部的生理活动都会使这个空间的压力发生变化,压力变化会导致耳机内部的阻抗变化,从而导致耳机内测量的电压发生微小变化,由此可以实现新的智能功能。

3.1.1 耳机中声电信号如何转化?

在这里插入图片描述
耳机发送和接收声音主要靠两个部件,线圈+隔膜。

发出声音时,代表音频信号的交流电通过线圈,产生洛伦兹力,使线圈前后运动,从而带动隔膜震动,产生声音。
接收声音时,隔膜被声波震动,带动线圈运动,从而产生交流电,即接收到的音频信号。

通过线圈的交流电的大小主要由三个因素决定:

  1. 待发送的输入音频信号的电能大小
  2. 耳机驱动的等效阻抗 Z(headphones)
  3. 耳机隔膜处的空气压力 P(headphones)

3.1.2 为什么微小电压变化能够作为传感器输入

在这里插入图片描述
以figure 3为例,人带上耳机后,由耳机、耳道、鼓膜耦合组成的压力场可以用一个双端口的戴维南等效网络来表示,这个网络的参数为耳道、鼓膜、耳机的压强和阻抗。注意,这不是一个电路图,只是一个网络模型。

这个网络可以用如下公式来表示:
在这里插入图片描述
其中,P和Z分别代表戴维南压力和等效阻抗。在这个公式中,对于测量微小电压有用的就是 Z(headphones)。另外三个变量都受人类产生的激励信号影响。比如人碰了一下耳机,就会导致耳机的戴维南压力P(headphones)变化;人呼吸、心跳等生理活动产生的血管变形或导致耳道的戴维南压力P(earcanal)变化;同时,每个人的耳朵长的都不同,导致每个人耳的等效阻抗Z(earcanal)不同。

如前面所说,耳机的等效阻抗能够决定音频信号交流电大小,并且二者是线性关系,因此可以通过交流电的微小变化来感知耳机阻抗的变化,从而感知人-耳机之间的交互以及人的生理活动。

3.2 精确测量电压 Null Measurement

上述测量方法面临两个基本的挑战:

  1. 如何精确测量交流电的变化?测量必须精确,并且必须是非侵入式的(给耳机内部加个电压表就是侵入式的)
  2. 由外部激励引起的交流电变化十分微弱,会被输入的音频信号掩盖。就算没有音频信号输入,测量如此微弱的信号本身就很难。因为电路更容易受0V附近的噪声电压影响,所以相同的电压变化范围,电压绝对值越小,越难精确测量(0-0.1V比3.2-3.3V要难测)

由headfi的原理可以知道,只要能精确的测量微小的电压变化,就能实现智能。那么要如何测量微小的电压变化呢?

主流的测量微小电压变化的方法为使用差分放大器,但是这种电路有个缺点:

  1. 太庞大
  2. 输入输出信号的频率必须匹配
  3. 容易收到强噪声干扰:由于输入阻抗很大,会产生热噪声;测量时因为需要令参考电压和测量电压相减,减法过程会引入额外误差

不用差分放大器用什么?
惠斯通电桥

3.2.1 什么是惠斯通电桥

在这里插入图片描述
传统的惠斯通电桥是用来测量电阻值的。如上图所示,R1, R2是两个阻值为常数的电阻,bd两点间有一个电流表,如果电流表的示数为0,就说明上下两个臂平衡了。那么就有如下等式

在这里插入图片描述
我们就能测量出未知电阻Rx了。

headfi中使用的惠斯通电桥有点不一样,是工业界常用的一种惠斯通电桥形式,如下所示:
在这里插入图片描述
类似的,R1和R2是两个常数值电阻,只要C1和Cx的阻抗相同,那么两条臂中间的压降Vg就等于0,如果Cx发生变化,导致和C1不相等,Vg就会发生变化

为什么使用惠斯通电桥叫做 Null Measurement?
因为对电路特性不会产生影响。电压表在测量电压时会引入额外的电流,这就会引入不确定性

在headfi中,就使用上述惠斯通电桥来测量交流电的微小变化。
具体如何操作?

  1. 将Cx替换为耳机驱动的等效阻抗,这样通过vg就能测量由耳机等效阻抗变化引起的电压变化。
  2. 将输入的音频信号作为电桥的供电电压,这样能够取消输入音频信号的强干扰(一旦双臂平衡,惠斯通电桥测量的电压只与两条臂上的阻抗变化有关,与为其供电的电源无关)

惠斯通电桥优势:

  1. 是无源电路,相比有源电路,测量灵敏度更高、受热噪声的影响更小;
  2. 其固有的差分电路能够在没有任何花销的前提下,去除输入的音频信号;
  3. 只由两个无源电阻构成,因为结构简单,容易被做成集成电路。

3.2.2 惠斯通电桥中的C1从何而来?

上述惠斯通电桥想要发挥作用,必须找一个和耳机等效阻抗相等的C1来平衡电桥。一般用一个RLC电路来代替C1,但是这样的话headfi就很难量产了,因为每个耳机的等效阻抗都不一样,而headfi对任何耳机都应该是通用的,不可能只适配某个耳机。

再说了,前面有提到测量电路只由两个电阻构成,怎么又加入了额外的C1了呢?
作者很巧妙地利用一对耳机两端的等效阻抗的对称性来解决这个问题。每一对耳机在出厂时都要经过校准,使两个耳机的等效阻抗相同。利用这个特点,可以使一对耳机的两个等效阻抗互为C1. 这样即不用引入额外的RLC电路,又可以使每一个耳机的等效阻抗都得到一个相匹配的C1,一箭双雕

3.2.3 一对耳机阻抗互为C1可能引发的问题

作者表示 Vg = E(left) - E(right)
如果令一对耳机的等效阻抗互为C1,那么可能会有这么一个担忧:如果某个外部激励同时被两个耳机的驱动捕获,并且产生相同的电压变化,那么Vg不是就等于0,不是就测不出来了吗?

实际上,这种情况不会发生,因为就算某个激励信号同时被双耳的驱动捕获,激励信号到达两个驱动的路径也是不同的,所以E(left)不可能会等于E(right)

3.3 电路图

在这里插入图片描述
这就是 headfi 的电路原理图,从左往右看,S1是开关;再往右就是惠斯通电桥,测量Vg的两个端口还连接着放大电路,以放大Vg;RL是一个5k欧姆的电阻,用于欺骗手机的ADC,因为手机的ADC必须要检测到麦克风的存在才开始采样工作。如何检测?通过检测接入设备的阻抗,需要达到千欧级别才能被检测到,但是headfi的输出阻抗不到100欧,所以headfi在电路的末尾串联了一个5千欧的电阻来欺骗手机

因为只由几个无源电阻和放大器构成,这个电路板的成本很低,量产后不到50美分;并且主要的功耗都在放大器后,一般也就0.2mW

4 基础评估

光说不练假把式,作者想要通过 benchmark evalutation 来证明两个事情:
(1)headfi能够精确地测量微小电压变化
(2)headfi不会影响音频质量

作者使用了从2.99美元到15000美元价格范围内地54种耳机来测试。参加测试的耳机分为三类:(1)入耳式;(2)半入耳式;(2)头戴式

4.1 直接激励信号测量敏感性测试

实验目的:验证headfi对直接激励信号微小电压的变化是否敏感。


直接激励信号是指手势触摸等等直接改变耳机阻抗的行为;间接激励信号是指戴上耳机等改变耳机所处环境的行为。


实验设备:
扬声器,麦克风,假头(双耳能够接收声音)
在这里插入图片描述

实验思路:
使用1KHZ,60dB的正弦信号作为微弱激励信号(相当于人在1m远处聊天,就算摸一下耳机的信号都比这个大)

实验指标:
RSS,接收信号的强度,画一个图,y轴是累计分布函数CDF,X轴是RSS;y轴0.5对应的x轴就是平均RSS值
在这里插入图片描述
如上图,W 是有激励信号的意思;W/O是没有激励信号的意思。可以看到,即使是没有激励信号时的最高值也小于有激励信号时的最低值。

实验结果:证明了headfi肯定能检测出微小的电压变化

4.2 间接激励信号测量敏感性测试

实验目的:测试headfi是否能检测到间接激励信号导致的电压微小变化,这里是测试是否能判断耳机是否戴上。

实验思路:在戴上耳机和不带耳机的情况下,分别令手机发送20HZ-20KHZ的chirp信号,然后耳机分别记录这两段信号,计算FRSS;再在两次都戴耳机的情况下计算FRSS,看是否有差别。

实验指标:54对耳机的归一化FRSS,如何算FRSS? 设x1和x2分别为戴上耳机和没戴耳机时的RX信号,分别作傅里叶变换,然后令两段频域序列逐点相减得到一个新序列,然后令新序列取绝对值+累加

实验结果:戴耳机+不带耳机算出的FRSS和戴耳机+戴耳机算出的FRSS有明显区别,说明headfi能够检测到间接激励信号引起的微小电压变化

在这里插入图片描述

4.3 音频质量测试

实验目的:测试连接wifi后音频音质是否会发生变化

实验思路:看连接headfi之后耳机的频响曲线是否发生变化,通过频响曲线来判断音质是否会变化

实验指标:一个高质量耳机和一个低质量耳机的频率响应曲线FR ; 一个低质量耳机的累积谱衰减CSD

实验结果:从频响曲线上看,使用headfi并不会改变耳机频响曲线的形状,但是对于低质量的耳机来说音频会产生更大的衰减;从CSD上看,headfi对于音频信号的音质影响很微弱。

在这里插入图片描述
上图是频响曲线上边是便宜耳机,下边是贵耳机
下图是便宜耳机的CSD

在这里插入图片描述

下面开始一次介绍headfi能实现的智能功能

5 用户识别

目标:
(1)检测用户是否戴上了耳机;
(2)自动识别用户身份

实现工具:支持向量机作为分类器,真人戴的耳机采集到的信号作为训练集的positive samples;假人戴的耳机采集到的信号作为训练集的negative samples

5.1 检测用户是否戴上耳机

原理:根据seashell resonance effect,戴上耳机的时候,会形成针对特定频率噪声的回声室,产生共鸣,此时RSS和其标准差都会发生明显变化,靠这个可以辨别耳机是否被戴上

实验思路:请27个志愿者,7女20男,其中有一对双胞胎;令他们分别戴上54款耳机进行测试,54款耳机被分为5组;每一轮测试都令志愿者戴上耳机再摘下耳机,记录回声信号,SVM会根据训练集的训练结果来判断志愿者是否戴上耳机。

实验结果:五组耳机的正确识别率都很高。
在这里插入图片描述
IEM(入耳式耳机)效果最好,因为其深入耳道,受噪声影响最小

5.2 用户身份识别

原理:通过耳机主动向用户耳内发送chirp信号,计算用户耳道的CIR,每个人耳道的CIR都不一样
在这里插入图片描述
如上图所示,这是三个人分别使用两幅耳机测量的CIR的傅里叶变换,可以看到不同人的CIR在3KHZ之后差异明显,因为人的耳道的生理差异在 sub-centimeter level

实验思路:对于非双胞胎的25名志愿者,每人录制50个回声,对于双胞胎,没人录制100个回声;使用 k-fold (k=5)交叉验证

实验指标:识别精确度

在用户识别方面作者做了5个子实验来探究headfi的用户识别性能。


子实验1

使用不同带宽的chirp信号获得的识别精度不同
在这里插入图片描述
高于15KHZ的时候精度下降,是因为此时信道sub-mm level的变化会被捕捉,从而干扰识别;低于100HZ也不行,因为大多数机械波噪声都在这个频段。

因此作者使用 10-10KHZ,1s的chirp信号


子实验2

在这里插入图片描述
测试了使用不同的机器学习方法的效果。评价指标是 false acceptance rate(FAR,是错的,但是被认为是对的) 和 false rejection rate(FRR,是对的,但是被认为是错的),越低越好。可以看到SVM性能最好。


子实验3

双胞胎生理特征相似,是否影响识别?

在这里插入图片描述
根据混淆矩阵,可以发现双胞胎的识别正确率和其他人相差不大。


子实验4

用户运动是否影响识别结果?
在这里插入图片描述
可以发现运动幅度越大,识别错误率越高,因为运动会改变CIR


子实验5

headfi是否能做到长期用户识别?会不会一段时间后就不行了?

在这里插入图片描述
根据实验结果,确实会。reference是刚刚训练出分类器后的测试结果,随着时间退役,正确率越来越低。因为体液分泌等生理活动,人耳道的生理特征会随着时间变化,从而改变CIR。经过作者测试,洗完澡后精确度就会下降7%。


6 生理感知

作者以心率检测为例。

6.1 理论

原理:心跳会引起微弱血管变形,由此产生极其微弱的激励信号。

面临的困难:激励信号会被噪声和用户运动覆盖。

信号处理步骤:

  1. 让vg通过24HZ低通滤波器,滤除噪声
    在这里插入图片描述

  2. 令vg作自相关,结果会出现尖峰,尖峰的位置会反映一次心跳的周期(注意,不是等于),通过尖峰的位置k可以通过Rbpm公式算出心率
    在这里插入图片描述


在这里插入图片描述


  1. 得到的自相关序列会很长,要找到尖峰不简单,可以通过人心跳一般在35-200bpm这一常识来锁定一个范围(L, U),在这一范围内找到幅度最大的peak,其位置代入Rbpm公式中即可算出心率

可能出现的问题:人运动产生的激励信号可能覆盖心跳产生的激励信号
在这里插入图片描述

解决方法:将vg分割为一个个窗,在每个窗内分别计算心率,将异常点去除后再算均值。

6.2 实验

实验目的:评估心率检测的性能

实验思路:每次持续测量40秒,窗宽度为4秒,每两个窗之间有2秒的重叠;在两种情况下测量志愿者的心率:(1)有播放音频;(2)没有播放音频

实验指标:错误率 ER,一台正规的血氧仪的心率检测结果作为参考值
在这里插入图片描述
其中,RHF为headfi检测的心率,RPO为血氧仪检测的心率。

为了探究不同因素对于心率检测的影响 ,作者做了3个子实验


子实验1

探究低通滤波器的截止频率对于检测结果的影响

此实验中耳机有播放音乐

在这里插入图片描述
可以看到截止频率在50HZ以下正确率比较高,于是作者设为24HZ


子实验2

探究环境噪声对于心率检测的影响

分为使用不同种类的耳机进行测试
在这里插入图片描述
C为耳罩式;S为半入耳式;IEM为入耳式;左边三个是耳机没播放音频的情况,右边三个带M后缀的是耳机有播放音频的情况

对于商用心率检测系统来说,只要错误率小于5%就行,所以headfi是合格的;为什么不同耳机错误率不同作者也无法准确回答,但是IEM错误率最高可能是因为与皮肤接触面积最小。


子实验3

人类运动对于心率检测的影响

作者令志愿者在测试期间随机戴上或摘下耳机,这样就带来了强干扰。
在这里插入图片描述
左边是没有运动的情况;右边是有运动的情况

虽然用户在运动时错误率上升,但是仍然在小于5%的要求内


7 手势识别

7.1 理论

原理:不同手势引起的vg的变化有不同的特征

作者展示了四种手势:
(1)敲左边;
(2)敲右边
(3)滑左边;
(4)滑右边

如何区分左右?
看peak的正负
在这里插入图片描述
左边敲击,先是负peak再是正peak;右边敲击,先是正peak再是负peak

如何区分tapping 和 sliding?
看产生的peaks持续的时长, sliding产生的peak更多,持续的时间更长
在这里插入图片描述

如何检测以上时域特性?
使用轻量级检测算法CUSUM

CUSUM步骤:

  1. 将vg的每个采样点记为xn,每个采样点都配一个权重wn
  2. 定义一个值叫Sn,并定义了两组计算Sn的方程,其中一个方程用于去除negative peak,另一个用于去除 positive peak
  3. 让vg并行通过 max 和 min 函数, 令得到的sn叠加,得到总sn
  4. 设第一个positive peak的时间位置为t1, 第一个negative peak的时间位置为t2,如果t1大于等于t2(即negative peak在前,positive peak在后),就是左边,如果t1小于t2(positive在前,negative在后),就是右边
  5. 定义一个手势的时长为整个sn序列中第一个非零值到最后一个非零值的平均时间,根据具体实验,定义了一个阈值5000,平均时间小于5000就是tapping,大于5000就是sliding

在这里插入图片描述

7.2 实验

实验思路:在有音频和无音频的情况下,每个手势都重复300次。然后统计混淆矩阵

在这里插入图片描述
没有音频,正确率99%;有播音频,正确率98%。都很高,充分证明了headfi能够实现手势识别

8 语音通信

8.1 理论

目的:在没有麦克风的情况下实现麦克风的功能,以进行全双工语音通信

原理:说话声音通过不同路径传到电桥两条臂,产生vg,vg就是要传递的声音信号(在手机端应该还有算法将vg转化为标准的音频信号,但是作者没说)

可能会有一个问题:
理论上,打电话的时候,headfi不仅仅捕捉到用户的声音,还会捕捉到电话对面的人的声音,这会产生回声干扰
但是现实中不用担心,因为运营商在基站会运用复杂的信号消除算法来解决回声问题

8.2 实验

本质:测试这个功能其实就是在测试在使用惠斯通电桥的情况下,将耳机作为麦克风的效果。

8.2.1 客观实验

实验思路:用不同种类的耳机通话,计算HPEAQ,作为参考,还直接用笔记本内置的麦克风进行通话计算HPEAQ,通过HPEAQ的大小来判断通话质量

实验指标:
有PESQ和PEAQ两种评估音频信号的指标,但是这两种指标都是评估由电话网络引起的音频信号衰减的,而我们需要的是能够评估由终端设备引起的信号衰减的指标

于是作者参考PEAQ提出了HPEAQ,即令HeadFi录制的音频与手机内置麦克风录制的音频作相关系数,相关系数越高,说明越相似,说明headfi通话质量越高。

HPEAQ的值越高,通话质量越高。

实验结果:
在这里插入图片描述
PC就是直接使用笔记本内置麦克风,毫无疑问是最高的。IEM分数最低,因为深入耳道,只能接收到骨传导的声音,而其他种类的耳机可以接收到的空气传导的声音。

相关系数很低,作者说是因为幅度相差太大,但是作者说频率响应是相似的。

8.2.2 主观实验

实验思路:对于音频来说,评价其质量还可以使用主观指标MOS,也就是令志愿者为音频质量打分。作者邀请了26位志愿者,年龄覆盖24-60岁。作者令志愿者戴上不同种类的耳机与自己通话,然后让志愿者为通话质量打分,作为比较,作者还在实验中加入了使用iphone6打电话以作为参考。

评分表如下:
在这里插入图片描述
实验结果:
在这里插入图片描述
可以看到主观评价结果与客观评价结果相似。

最后作者总结了一下,结束!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【文献精读】HeadFi: Bringing Intelligence to All Headphones 的相关文章

  • Oracle grant all privileges to user

    测试流程 xff1a 解锁HR用户 SQL gt alter user hr account unlock identified by hr User altered 创建一个test用户 SYS 64 orcl11g gt CREATE
  • Python的使用技巧:any all的短路

    注意迭代类型和list的结果是不一样的 xff1a if name 61 61 39 main 39 a 61 1 2 3 if any print i is None for i in a print 6666666666 1 2 3 6
  • SR850出现fault in slot ALL PCI error on system ThinkSystem SR850报错

    SR850出现fault in slot ALL PCI error on system ThinkSystem SR850报错 一 报错信息显示二 判断故障并修复 一 报错信息显示 服务器型号为lenovo SR850 xff0c XCC
  • 计算机编程语言a语言,一种计算机智能编程语言 A computer programming language intelligence...

    摘要 xff1a 本发明涉及一种计算机编程语言实现 尤其是一种面向生命体编程方式在智能机器人及智能设备控制上的编程语言实现 The present invention relates to a computer programming la
  • 15 THINGS ALL GIRLS SHOULD KNOW ABOUT THEIR VAGINA

    Here are 15 facts that EVERY GIRL should know about her vagina Don t be shy Your vagina is part of your body and it will
  • 解决 grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘PASSWORD‘ with grant option; 错误

    从MySQL 8开始 xff0c 您不再可以 隐式地 使用GRANT命令创建用户 用CREATE USER代替 xff0c 后面跟着GRANT语句 CREATE USER 39 root 39 64 39 39 IDENTIFIED BY
  • shell脚本中 LC_ALL=C 的含义

    在shell脚本中常见到如下语句 export LC ALL 61 C 这一句的作用是为了去除所有本地化的设置 xff0c 让命令能正确执行 Linux的运行环境 在Linux中通过locale来设置程序运行的不同语言环境 xff0c lo
  • kolla-ansible部署Train版openstack(all-in-one)

    本文最后更新于 207 天前 xff0c 其中的信息可能已经有所发展或是发生改变 kolla ansible简介 kolla 的使命是为 openstack 云平台提供生产级别的 开箱即用的交付能力 kolla 的基本思想是一切皆容器 xf
  • 【折腾系列—All In One主机】1、 PVE虚拟机系统安装

    PVE虚拟机系统安装 写在前面1 什么是All In One主机 xff1f 2 什么是PVE虚拟机 3 PVE虚拟机的安装3 1 制作PE启动盘进行硬盘格式化3 2 PVE启动盘制作3 3 安装PVE虚拟机 写在前面 为什么要搭建All
  • 零刻 SEi12 Pro,ALL IN ONE搭建教程

    一台mini的NUC能做什么 xff1f 当然每个人的心里都会有着不同的答案 xff0c 既然是一台Mini主机那就肯定少不了部署一个All In One来榨干他的性能 今天我就大家带来一个部署All In One的详细教程 xff0c 希
  • 让老照片重现光彩:Bringing Old Photos Back to Life(实战)

    Bringing Old Photos Back to Life 香港城市大学和微软亚洲研究院的 让老照片重现光彩 xff08 Bringing Old Photos Back to Life xff09 项目侧重于对老照片进行划痕修复和人
  • attention is all you need

    摘要 主流的序列转换模型都是基于复杂的循环或卷积神经网络 xff0c 这个模型包含一个编码器和一个解码器 具有最好性能的模型是通过一个注意力机制 xff0c 将编码和解码连接在一起 我们提出了一个新的简单网络结构 Transformer x
  • CONFIG_KALLSYMS_ALL

    内核配置 在2 6内核中 xff0c 为了更好地调试内核 xff0c 引入了kallsyms kallsyms抽取了内核用到的所有函数地址 全局的 静态的 和非栈数据变量地址 xff0c 生成一个数据块 xff0c 作为只读数据链接进ker
  • [iOS] Get all UIView subviews with all property values

    转自StackOverFlow span class com style margin 0px padding 0px border 0px color rgb 128 128 128 background transparent span
  • UNION 和 UNION ALL

    UNION用的比较多union all是直接连接 xff0c 取到得是所有值 xff0c 记录可能有重复 union 是取唯一值 xff0c 记录没有重复 UNION 和 UNION ALL 的语法都是 xff1a SQL 语句 1 UNI
  • Vim 键盘贴纸(打印用)

    Vim是一个类似于Vi的著名的功能强大 高度可定制的文本编辑器 在Vi的基础上改进和增加了很多特性 vim学习过程中需要记住好多键位的使用 下面分享一下vim键位图 打印后贴在键盘上 原版下载地址 密码 ultv 注 作者纯手工打造 难免有
  • 检测耳机是否插入 iOS 设备

    iOS 设备上有互动电影 当电影开始时 点击 视频开始的那个人会问你插入耳机 如果插入 那么视频应该自动跳到故事 直接转到视频故事 我应该怎么办 以及如何编写代码 首先 您必须注册 AudioRoute 更改 AudioSessionAdd
  • 将外部配件连接到 3.5 毫米耳机插孔时无法收到通知

    我已经尝试让它发挥作用有一段时间了 我已经完成了文档中所说的所有操作 但仍然一无所获 这是我的应用程序委托中注册本地通知的代码 void registerForLocalNotifications NSNotificationCenter
  • 检测耳机 Android

    近年来我在 Android 上编程 我想知道一些事情 如何检测耳机的存在 有一个方法 isWiredHeadsetOn 但它不起作用 我已经尝试过 但它不起作用 AudioManager am AudioManager getSystemS
  • 耳机是否已插入? IOS 7

    为 iPhone 开发一个应用程序 其中包含也需要通过耳机收听的音频文件 如何检查耳机是否未插入 以便我可以告诉用户插入耳机 我有来自另一个线程的以下代码 但不推荐使用 audioSessionGetProperty 方法 任何人都知道如何

随机推荐