0 / 0 / 1
Регистрация: 27.04.2011
Сообщений: 17
1

Использование Sphinx4 jar в .NET через ikvm.net или веб сервисы?

27.04.2011, 01:30. Показов 2209. Ответов 4
Метки нет (Все метки)

Здравствуйте,

Пытвюсь заставить распознаватель речи Sphinx 4 работать в .NET. Пробовал IKVM.NET и веб сервисы. Не одно решение неработает корректно.

Вот темы где я пытаюсь разобраться с кодом, багами и ексепшенами (на английском).
веб сервисы
ikvm.net

Буду очень благодарен за помощь или за предлощение другого решения относительно работы Sphinx .jar в .NET.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2011, 01:30
Ответы с готовыми решениями:

Как в .Net core выключать или включать сервисы в appSettings?
Есть у меня , условно говоря, какой-то сервис ,добавленный в стартапе. ...

Открыть jar файл (minecraft.jar) посредством VB.NET
Всем привет! Вообщем, как открыть файл minecraft.jar с помощью vb.net ? Я совсем не представляю...

Создаие веб-узла ASP.NET и использование в нем UpdatePanel
Добрый день уважаемые форумчане. Появилась проблема по использованию компонента UpdatePanel. При...

Использование VB или VB .NET совместно с IIS
В указанных программах есть поддержка для упрощенного написания ASP скриптов из этих оболочек....

4
_
2363 / 1239 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.04.2011, 14:17 2
То есть, если я правильно понял, ты сначала создал в netbeans веб-службу на java, а потом проект на шарпе, который подключался к этой вебслужбе и передавал запросы, а эта вебслужба передавала в приложение на шарпе результат распознавания?
Не лучше ли сразу все на java сделать?
0
0 / 0 / 1
Регистрация: 27.04.2011
Сообщений: 17
27.04.2011, 15:22  [ТС] 3
Да, сначала так, и простой стринг типа "хело фром джава" оно передавало в C#. Потом сделал клиент на джава в нет бинс (на всяк случай). Сейчас работаю только в нет бинс, но ексепшены лезут, простой пример сфинкса работает в простом консольном приложении нормально, а вот результат (распознаных слов) через веб сервис нормально не передается.
Я думаю может это изза того что разпознавание идет на сервере (соотвественно и поиск ресурса- микрофона), +почему-то веб сервис какбудто хчет кудато файл ресурса копировать (в C:\Users\UserName\GlassFish_Server\glassfish\domai ns\domain0\lib\classes\), хоть он должен быть с исходниками (вместе с .class файлами или на каталог выше).

А есть вообще другой метод использования джарника в нет?
Можно ли как-то устанить ексепшены при работе с ikvm.net, или это проблемы ikvm.net после конвертирования?

PS: еси кто может помочь - могу дать исходники.

А вот ексепшин моего последнего билда с темы "веб сервисы":
Код
Compiling 1 source file to C:\Users\Sergii\Documents\NetBeansProjects\ClientWSApplication\build\classes
compile-single:
run-single:
Start speaking. Press Ctrl-C to quit.

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Allocation of search manager resources failed
	at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
	at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:119)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
	at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
	at $Proxy29.configSphinx(Unknown Source)
	at clientwsapplication.ClientWSApplication.configSphinx(ClientWSApplication.java:58)
	at clientwsapplication.ClientWSApplication.main(ClientWSApplication.java:21)
Caused by: java.lang.RuntimeException: Allocation of search manager resources failed
	at edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager.allocate(SimpleBreadthFirstSearchManager.java:650)
	at edu.cmu.sphinx.decoder.AbstractDecoder.allocate(AbstractDecoder.java:87)
	at edu.cmu.sphinx.recognizer.Recognizer.allocate(Recognizer.java:168)
	at wsSphinx.NewWebService.configSphinx(NewWebService.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:143)
	at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
	at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
	at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
	at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
	at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:142)
	at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
	at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
	at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:212)
	at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:144)
	at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
	at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
	at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
	at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
	at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
	at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
	at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
	at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
	at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:145)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.FileNotFoundException: C:\Users\UserName\GlassFish_Server\glassfish\domains\domain0\lib\classes\hello.gram (The system cannot find the file specified)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:120)
	at java.io.FileInputStream.<init>(FileInputStream.java:79)
	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
	at java.net.URL.openStream(URL.java:1010)
	at edu.cmu.sphinx.jsgf.parser.JSGFParser.newGrammarFromJSGF(JSGFParser.java:232)
	at edu.cmu.sphinx.jsgf.JSGFGrammar.loadNamedGrammar(JSGFGrammar.java:697)
	at edu.cmu.sphinx.jsgf.JSGFGrammar.commitChanges(JSGFGrammar.java:613)
	at edu.cmu.sphinx.jsgf.JSGFGrammar.createGrammar(JSGFGrammar.java:300)
	at edu.cmu.sphinx.linguist.language.grammar.Grammar.allocate(Grammar.java:116)
	at edu.cmu.sphinx.linguist.flat.FlatLinguist.allocate(FlatLinguist.java:300)
	at edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager.allocate(SimpleBreadthFirstSearchManager.java:646)
	... 62 more
Java Result: 1
BUILD SUCCESSFUL (total time: 13 seconds)
0
_
2363 / 1239 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.04.2011, 15:45 4
Особо помочь не могу - с вебслужбами на джаве не работал, не знаю насколько они адекватно связываются с ресурсами net-приложения. Да и так особо даже не представляю как jar-файл связать с net-приложением

К тому же не совсем понятно, как ты работаешь с микрофоном - допустим вебслужба на одном компьютере, net-приложение на другом - тогда скорее всего вебслужба будет активизировать микрофон на том компе, на котором она находится, а не на клиенте.

Как вариант я тебе советую попробовать те демо-приложения, где там файл распознается, а всю работу организовать примерно так - net приложение записывает звук в файл и передает его на вебслужбу, а та уже отвечает.

Но все равно, не совсем понятно, а зачем тут net - если ты неплохо с джавой знаком и опять же может всю структуру приложения построить на джаве, особенно если учесть, что сфинкс изначально закошен под этот язык.

PS. там еще есть такая штука как pocetsphinx - на с - может с помощью нее попытаться создать библиотеку, которую затем подключать к net-приложению
0
0 / 0 / 1
Регистрация: 27.04.2011
Сообщений: 17
27.04.2011, 16:00  [ТС] 5
Мое задание - заставить Sphinx4 работать в .net, так как весь главный проект написан на си++ (нет). Вот я и ищу способы это сделать. Теоретически, IKVM.NET - это идеальный вариант, так как он конвертирует .jar файлы в .dll, но когда использую сконвертированный сфинкс4, вижуал студио дает ексепшены, а код тот же самый как и в простом неловорд консольном джава проекте. Вот я и пробую веб сервисы теперь ...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2011, 16:00
Помогаю со студенческими работами здесь

Использование Java-библиотеки в коде C# или VB .NET
Привет всем! У меня есть Java-библиотека - файл с расширением .jar. Подскажите, пожалуйста,...

Что выбрать в Xamarin.Android ADO.NET или SQLite.NET?
Учу Xamarin.Android, выяснил что для хранения локальных данных можно использовать базу данных...

VISUAL C++.NET или VB.NET. На каких программистов спрос больше?
Я хотел бы узнать, на каках программистов сейчас бпльше спрос:VISUAL C++.NET или VB.NET.

Подскажите что лучше выбрать VB.NET или C.NET (C#) ?
Я программирую на VB. Но так как сейчас появилась .NET платформа решил перейти на неё. Подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru