Потоковая передача входа к Системе. Речь. Распознавание. SpeechRecognitionEngine

Я начал использовать буровую установку тестирования панели инструментов Google для iPhone и его разработку большого для меня.

google-toolbox-for-mac

8
задан Eric Brown 25 September 2012 в 20:19
поделиться

2 ответа

Пытались ли вы обернуть сетевой поток в System.IO.BufferedStream?

NetworkStream netStream = new NetworkStream(socket,true);
BufferedStream buffStream = new BufferedStream(netStream, 8000*16*1); // buffers 1 second worth of data
appRecognizer.SetInputToAudioStream(buffStream, formatInfo);
2
ответ дан 5 December 2019 в 10:42
поделиться

Начну с Java Bittorrent API . Банка около 70Kb, но вы, вероятно, можете снять его, удалив классы, не необходимые для создания торрентов. SDK имеет образец ExampleCreateTorrent.java , иллюстрирующий, как делать именно то, что нужно.

Вы также можете посмотреть, как она реализована в Java-клиентах с открытым исходным кодом, таких как Azureus.

-121--3770446-

Для запроса динамического типа объекта можно использовать, например, typeid , но я не знаю способа непосредственного создания экземпляра нового объекта из информации о типе.

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

#include <typeinfo>
#include <iostream>

class Base
{
public:
    virtual void foo() const
    {
        std::cout << "Base object instantiated." << std::endl;
    }
};


class Derived : public Base
{
public:
    virtual void foo() const
    {
        std::cout << "Derived object instantiated." << std::endl;
    }
};


class Factory
{
public:
    static Base* createFrom( const Base* x )
    {
        if ( typeid(*x) == typeid(Base) )
        {
            return new Base;
        }
        else if ( typeid(*x) == typeid(Derived) )
        {
            return new Derived;
        }
        else
        {
            return 0;
        }
    }
};


int main( int argc, char* argv[] )
{
    Base* X = new Derived;
    if ( X != 0 )
    {
        std::cout << "X says: " << std::endl;
        X->foo();
    }

    Base* Y = Factory::createFrom( X );
    if ( Y != 0 )
    {
        std::cout << "Y says: " << std::endl;
        Y->foo();
    }

    return 0;
}

P.S. : Основной частью этого примера кода является метод Factory:: createFrom . (Наверное, это не самый красивый код C++, так как мой C++ немного ржавел. Заводской метод, вероятно, не должен быть статичным, на второй мысли.)

-121--2158587-

В итоге я буферизовал входной сигнал, а затем отправил его в механизм распознавания речи последовательно большими порциями. Например, я могу отправить сначала первые 0,25 секунды, затем первые 0,5 секунды, затем первые 0,75 секунды и так далее, пока не получу результат. Я не уверен, является ли это наиболее эффективным способом решения этой проблемы, но он дает удовлетворительные результаты для меня.

Удачи, Шон

1
ответ дан 5 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: