gpt4 book ai didi

android - [AS3][Air for Android] 获取流式麦克风输入?

转载 作者:太空狗 更新时间:2023-10-29 13:32:51 25 4
gpt4 key购买 nike

有没有办法获得真正的麦克风流输入?

我目前的示例代码看起来是获取麦克风输入数据,并将其保存到声音对象并立即播放。

有没有办法正确地传输它?

如果不是,在我的例子中,有没有办法获取麦克风输入数据,但将音频静音,因为它会导致反馈循环(尽管 setLoopBack 被设置为 false..)

代码如下:

import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.media.SoundTransform;
import flash.utils.*;

var _soundBytes:ByteArray = new ByteArray();
var _micBytes:ByteArray;
var son:Sound;
var sc:SoundChannel;
var pow:int = 0;
var myBar:Sprite;

stage.quality = "LOW";

// this code ended up muting the mic input oddly?
//SoundMixer.soundTransform = new SoundTransform(0);

init();

function init()
{
myBar = new Sprite;
micInit();
soundInit();

addEventListener(Event.ENTER_FRAME, visualise);
}

function micInit()
{
var mic:Microphone = Microphone.getMicrophone();

if(mic != null) {
//mic.setUseEchoSuppression(true);
mic.setLoopBack(false);
mic.setSilenceLevel(0);
mic.rate = 44;
mic.gain = 60;
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
}
}

function micSampleDataHandler(event:SampleDataEvent):void
{
_micBytes = event.data;
sc = son.play();
}

function soundInit():void {
son = new Sound();
son.addEventListener(SampleDataEvent.SAMPLE_DATA, soundSampleDataHandler);
}

function soundSampleDataHandler(event:SampleDataEvent):void {
for (var i:int = 0; i < 8192 && _micBytes.bytesAvailable > 0; i++) {
var sample:Number = _micBytes.readFloat();
event.data.writeFloat(sample);
event.data.writeFloat(sample);
}
}

function drawLines(e:Event):void{

SoundMixer.computeSpectrum(_soundBytes, true);
myBar.graphics.clear();
myBar.graphics.lineStyle(2,0xabc241);
for (var i=0; i < 256; i++) {
pow = _soundBytes.readFloat()*200;
pow = Math.abs(pow);
myBar.graphics.drawRect(i*2, 0, 2, pow);
addChild(myBar);
}
}

希望你能帮上忙!

最佳答案

要使用声学回声消除,请调用 Microphone.getEnhancedMicrophone() 以获取对增强型麦克风对象的引用。将 Microphone.enhancedOptions 属性设置为 MicrophoneEnhancedOptions 类的实例。这是一篇讨论这一切的文章。 Article about enhanced microphone options at Adobe

编辑:我说得太早了。我以前用过很多次增强型麦克风,但我决定自己阅读这篇文章,看看是否有任何有趣的东西可以从中学到新的东西……我在接近尾声时发现了这个

AEC 的计算成本很高。目前,Flash Player 和 AIR 仅支持桌面平台

虽然我只看了日期...去年,所以也许试试看,现在支持了吗?!?

关于android - [AS3][Air for Android] 获取流式麦克风输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com