Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Распознавание голоса во флеш (http://www.flasher.ru/forum/showthread.php?t=152581)

dmitry bond 20.03.2011 02:36

Распознавание голоса во флеш
 
Ребят, не я не наверняка вы, не знаем как можно распознавать голос во флеш, а ведь это многим бы пригодилось. Давайте разбираться вместе. Пусть каждый предложит идею как со стандартными функциями работы с голосом или с дополнительными помошниками написанными на других языках, можно различить букву а от б =)

GBee 20.03.2011 03:33

Интернет знает

tsarapkabel 20.03.2011 03:38

Распознаватель жестов не покатит? http://www.bytearray.org/?p=1151

dmitry bond 20.03.2011 03:40

нет именно голос, специально для разработчиков

NikolyA 20.03.2011 05:33

ууу как много ты от флеша хочешь

dmitry bond 20.03.2011 05:37

если во флеше нельзя, а я так понимаю это невозможно, есть ли помошники, библиотеки ? Может сторонние программы с сокетами

NikolyA 20.03.2011 05:44

http://speechapi.com/live-demos/http-parrot.html - попробуй это

andrew911 20.03.2011 05:46

http://speechapi.com/

Опоздал ;)

NikolyA 20.03.2011 05:48

http://www.jamesward.com/2009/10/01/...peech-in-flex/ - есть даже исходник который взаимодействует с iSpeech.org API

Astraport 20.03.2011 10:07

Распознавание голоса и текста все же разные вещи.

Cornford 20.03.2011 10:26

Что понимается под распознаванием голоса?
Либо это перевод речи в буквы и слова и предложения и т.д., или это распознавание голоса и отнесение его к конкретному человеку (т.е. по тембру или както там еще)?
В любом случае эти вещи давно придуманы и на флеш перевести особой проблемы нет.

Alex Lexcuk 20.03.2011 15:26

если надо а отличить от б то можно попробовать так. Нарисовать кривую спектрограммы (исходников полно, даже в хелпе есть) сделать 10 штук спекторгамм буков а и б и сравнивать их с новой спектрограммой. Где процент будет больше та и буква. Это пока идея х, тк до сих пор нет вменяемых гаджетов с голосовым управлением. Можно наверно отличить и от о к примеру.

dmitry bond 20.03.2011 15:43

необходимо пока отдельные понимаемые фразы, поэтому я думаю проблемм в этом не будет, но вот тогда такой вопрос как во флеше извлекать из звука эту спектограмму

kseniya 20.03.2011 15:50

Цитата:

Сообщение от dmitry bond (Сообщение 982089)
вопрос как во флеше извлекать из звука эту спектограмму

есть computeSpectrum для всего звука и extract для Sound, а ещё для микрофона есть SampleDataEvent

Например: (взято из хелпа)
Код AS3:

const DELAY_LENGTH:int = 4000;
var mic:Microphone = Microphone.getMicrophone();
mic.setSilenceLevel(0, DELAY_LENGTH);
mic.gain = 100;
mic.rate = 44;
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
function micSampleDataHandler(event:SampleDataEvent):void {
        const PLOT_HEIGHT:int = 200;
        const CHANNEL_LENGTH:int = 256;
        var g:Graphics = this.graphics;
        g.clear();
        g.lineStyle(0, 0x6600CC);
        g.beginFill(0x6600CC);
        g.moveTo(0, PLOT_HEIGHT);
        var n:Number = 0;
        var i:uint = 0;
        while (event.data.bytesAvailable) {
                n = (event.data.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
                ++i;
        }
        g.lineTo(0, PLOT_HEIGHT);
        g.endFill();
}

вот ещё один пример с fft
Код AS3:

const DELAY_LENGTH:int = 4000;
var mic:Microphone = Microphone.getMicrophone();
mic.setSilenceLevel(0, DELAY_LENGTH);
mic.gain = 100;
mic.rate = 44;
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
var timer:Timer = new Timer(DELAY_LENGTH);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
var soundBytes:ByteArray = new ByteArray();
function micSampleDataHandler(event:SampleDataEvent):void {
        while (event.data.bytesAvailable) {
                var sample:Number = event.data.readFloat();
                soundBytes.writeFloat(sample);
        }
}
function timerHandler(event:TimerEvent):void {
        mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
        timer.stop();
        soundBytes.position = 0;
        var sound:Sound = new Sound();
        sound.addEventListener(SampleDataEvent.SAMPLE_DATA, playbackSampleHandler);
        sound.play();
}
function playbackSampleHandler(event:SampleDataEvent):void {
        for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++) {
                var sample:Number = soundBytes.readFloat();
                event.data.writeFloat(sample);
                event.data.writeFloat(sample);
        }
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
        var bytes:ByteArray = new ByteArray();
        const PLOT_HEIGHT:int = 200;
        const CHANNEL_LENGTH:int = 256;
        SoundMixer.computeSpectrum(bytes, true, 0);
        var g:Graphics = this.graphics;
        g.clear();
        g.lineStyle(0, 0x6600CC);
        g.beginFill(0x6600CC);
        g.moveTo(0, PLOT_HEIGHT);
        var n:Number = 0;
        for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
        }
        g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
        g.endFill();
        g.lineStyle(0, 0xCC0066);
        g.beginFill(0xCC0066, 0.5);
        g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
        for (i = CHANNEL_LENGTH; i > 0; i--) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
        }
        g.lineTo(0, PLOT_HEIGHT);
        g.endFill();
}


Cornford 20.03.2011 17:31

Плюс можно сделать словарь слов и потом распознанное слово сравнивать со словарем, чтобы свести ошибки к минимуму.


Часовой пояс GMT +4, время: 04:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.