Я начал использовать буровую установку тестирования панели инструментов Google для iPhone и его разработку большого для меня.
Пытались ли вы обернуть сетевой поток в 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);
Начну с 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++ немного ржавел. Заводской метод, вероятно, не должен быть статичным, на второй мысли.)
В итоге я буферизовал входной сигнал, а затем отправил его в механизм распознавания речи последовательно большими порциями. Например, я могу отправить сначала первые 0,25 секунды, затем первые 0,5 секунды, затем первые 0,75 секунды и так далее, пока не получу результат. Я не уверен, является ли это наиболее эффективным способом решения этой проблемы, но он дает удовлетворительные результаты для меня.
Удачи, Шон