Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.90.242.249] |
|
Страницы: (7) « Первая ... 4 5 [6] 7 все ( Перейти к последнему сообщению ) |
Сообщ.
#76
,
|
|
|
ну если и правда всё так просто , то реализуйте в коде и все дела...
пофонемное распознавание дело нехитрое но есть одно "но",оно дикторозависимое и требует специальных условий и длительной настройки-тренировки под пользователя.А это в свою очередь означает , что практического смысла в таком ПО будет немного...так удовлетворить чисто научный интерес. |
Сообщ.
#77
,
|
|
|
Цитата пофонемное распознавание дело нехитрое но есть одно "но",оно дикторозависимое и требует специальных условий и длительной настройки-тренировки под пользователя. С такими высказываниями нужно быть осторожнее |
Сообщ.
#78
,
|
|
|
Цитата С такими высказываниями нужно быть осторожнее Что конкретно вас смутило?Обоснуйте если не сложно. ага кажется догадался...ну скажем так: пофонемное распознавание дело нехитрое но есть одно "но",оно дикторозависимое(для близкого к 100% опознавания) и требует специальных условий и длительной настройки-тренировки под пользователя. |
Сообщ.
#79
,
|
|
|
Такой вот вопрос, можно ли с помощью стандартных библиотек некрософта (NetFW, Speechlib) получить пофонемное распознавание?
Сколько не мучаюсь не могу нигде найти такого...Хотя по идее там это должно быть, так как в грамматическом словаре xml можно задавать из каких фонем состоит слово и просто добавлять фонемы... Или вот еще (пока писал вспомнил), можно как нибудь изменить задержку между распознаваемыми словами в этих библиотеках? Если можно, то реально будет прописать все фонемы в словарь и не мучаться...Нашел настроики рекогнайзеров в реестре, там такого нет...??? |
Сообщ.
#80
,
|
|
|
Отвечаю на свой вопрос
Можно, но частично и через задний проход... С помощью XML правил можно подогнать транскрипцию слов, транскрипция фонем есть в описании MS SDK. Пример XML правил: Цитата <GRAMMAR LANGID="409" LEXDELIMITER="|" WORDTYPE="LEXICAL"> <RULE NAME="1" TOPLEVEL="ACTIVE"> <P>|bender|bandar|b eh n d ae r;</P> </RULE> <RULE NAME="2" TOPLEVEL="ACTIVE"> <P>|baran|baaraan|b aa r aa n;</P> </RULE> </GRAMMAR> Причем если слово в транскрипции разделить менее чем по 3 буквы, то это автоматически будет считаться фонемой... воооооооот... Если надо могу выложить полный код на C# c английскими фонемами. |
Сообщ.
#81
,
|
|
|
Roman55555! Конечно выкладывай!
|
Сообщ.
#82
,
|
|
|
Черт, так и знал...
Цитата using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using SpeechLib; using System.Collections; namespace SpeechTest { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button cmdEnable; private SpeechLib.SpSharedRecoContext objRecoContext = null; private SpeechLib.ISpeechRecoGrammar grammar = null; private SpeechLib.ISpeechGrammarRule menuRule = null; private System.Windows.Forms.TextBox txtReco; private TextBox textBox1; private IContainer components; public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.cmdEnable = new System.Windows.Forms.Button(); this.txtReco = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // cmdEnable // this.cmdEnable.Location = new System.Drawing.Point(16, 16); this.cmdEnable.Name = "cmdEnable"; this.cmdEnable.Size = new System.Drawing.Size(96, 23); this.cmdEnable.TabIndex = 0; this.cmdEnable.Text = "Enable Speech"; this.cmdEnable.Click += new System.EventHandler(this.cmdEnable_Click); // // txtReco // this.txtReco.Location = new System.Drawing.Point(16, 75); this.txtReco.Name = "txtReco"; this.txtReco.Size = new System.Drawing.Size(590, 20); this.txtReco.TabIndex = 5; // // textBox1 // this.textBox1.Location = new System.Drawing.Point(16, 49); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(590, 20); this.textBox1.TabIndex = 10; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(618, 107); this.Controls.Add(this.textBox1); this.Controls.Add(this.txtReco); this.Controls.Add(this.cmdEnable); this.Name = "Form1"; this.Text = "Speech Test"; this.ResumeLayout(false); this.PerformLayout(); } [STAThread] static void Main() { Application.Run(new Form1()); } private void cmdEnable_Click(object sender, System.EventArgs e) { // Get an insance of RecoContext. I am using the shared RecoContext. objRecoContext = new SpeechLib.SpSharedRecoContext(); // Assign a eventhandler for the Hypothesis Event. objRecoContext.Hypothesis += new _ISpeechRecoContextEvents_HypothesisEventHandler(Hypo_Event); // Assign a eventhandler for the Recognition Event. objRecoContext.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(Reco_Event); //Creating an instance of the grammer object. grammar = objRecoContext.CreateGrammar(0); grammar.CmdLoadFromFile("z.xml", SpeechLoadOption.SLODynamic); grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive); /* ЗАГРУЗКА ИЗ ОБЫЧНОГО ТХТ ФАЙЛА //Activate the Menu Commands. menuRule = grammar.Rules.Add("MenuCommands",SpeechRuleAttributes.SRATopLevel|SpeechRuleAttributes.SRADynamic,1); object PropValue = ""; StreamReader sr = new StreamReader("D:\\trans.txt"); string line; while ((line = sr.ReadLine()) != null) { menuRule.InitialState.AddWordTransition(null, line, "", SpeechGrammarWordType.SGLexical, line, 1, ref PropValue, 0.2F); } grammar.Rules.Commit(); grammar.CmdSetRuleState("MenuCommands", SpeechRuleState.SGDSActive); textBox1.AppendText("!"); */ } private void Reco_Event(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result) { textBox1.AppendText(Result.PhraseInfo.GetText(0, -1, false)); } private void Hypo_Event(int StreamNumber, object StreamPosition, ISpeechRecoResult Result) { txtReco.AppendText(Result.PhraseInfo.GetText(0, -1, false)); } } } Кстати распознавать стало на порядок лучше... Но проблема осталась старая > распознаются целые слова, а не фонемы, хотя при пополнении словаря слов и написании преобразователя их транскрипций можно достичь похожег о результата... Прикрепил еще в нагрузку транскрипции на англ и перевод на русский (делал сам, так что не обессудьте) Для новичков могу выложить целый проект... ну я думаю разберетесь... Еще чуть не забыл, если в xml правилах задавать фонемы, то только из списка который я дал, иначе вылетит ошибка! Вобщем если будут вопросы пишите - постараюсь ответить... Прикреплённый файлtranscrypt.rar (12.55 Кбайт, скачиваний: 709) |
Сообщ.
#83
,
|
|
|
Сообщ.
#84
,
|
|
|
Вот еще полезная информация про SDK и вообще.
С помощью следующего кода можно менять лимит загрузки процессора при распознавании, задержку между словами или фразами, адаптацию и пределы расспознавания: Цитата Boolean SRprop; objRecoContext = new SpeechLib.SpSharedRecoContext(); SRprop = objRecoContext.Recognizer.SetPropertyNumber("ResourceUsage", 80); SRprop = objRecoContext.Recognizer.SetPropertyNumber("ResponseSpeed", 200); SRprop = objRecoContext.Recognizer.SetPropertyNumber("ComplexResponseSpeed", 200); SRprop = objRecoContext.Recognizer.SetPropertyNumber("HighConfidenceThreshold", 90); SRprop = objRecoContext.Recognizer.SetPropertyNumber("NormalConfidenceThreshold", 50); SRprop = objRecoContext.Recognizer.SetPropertyNumber("LowConfidenceThreshold", 10); SRprop = objRecoContext.Recognizer.SetPropertyNumber("AdaptationOn", 0); Еще транскрипции с русского на английский! Цитата Russian letter Symbol Pronunciation Я (stressed) ya as ya in yahoo Я (unstressed) ee as ee in meet, but very short Е (stressed) ye as ye in yes Е (unstressed) ee as ee in meet, but very short Ё (always stressed) yo as yo in yonder Ю yoo as the word you И (stressed) ee as ee in meet Russian letter Symbol Pronunciation A (stressed) ah as Ah, but shorter A (unstressed) a as u in but O (stressed) o as aw in law O (unstressed) a as u in but Ы i no English equivalent У oo as oo in wood Э e as e in pet Russian letter Symbol Pronounced as Б (soft) b b in bee Б (hard) b b in but В (soft) v v in view В (hard) v v in voice Г (soft) g g in girl Г (hard) g g in go Д (soft) d d in dew Д (hard) d d in dial З (soft) z z in zeal З (hard) z z in zoom К (soft) k k in okey К (hard) k c in clock Л (soft) l l in leak Л (hard) l l in lump М (soft) m m in muse М (hard) m m in monk Н (soft) n n in need Н (hard) n n in noon П (soft) p p in pew П (hard) p p in mop Р (soft) r no equivalent Р (hard) r no equivalent С (soft) s s in seed, sew С (hard) s s in soup Т (soft) t t in stew Т (hard) t t in ten Ф (soft) f f in few Ф (hard) f f in fault Х (soft) kh h in huge Х (hard) kh h in host Ц (always hard) ts ts in what's up Ч (mostly soft) ch ch in church Ш (hard) sh sh in shield Щ (soft) shch no equivalent й (soft) j y in yes or may |
Сообщ.
#85
,
|
|
|
Здравствуйте, Roman55555. Появилось ли за год что-нибудь нового по данной теме?
|
Сообщ.
#86
,
|
|
|
Evgeniyuser, чем вас cmu-sphinx не устраивает как готовое и открытое решение для распознования речи?
p.s. на сколько я вижу roman55555 Unregistered |
Сообщ.
#87
,
|
|
|
zamir
А если точить под свои нужды? Я понял, что нужно использовать Java? А на С# пойдет? |
Сообщ.
#88
,
|
|
|
sphinx4 на java
pocketsphinx на Cи - на сколько я понял компилируется и на windows и на linux я про С# ничего не знаю - но если он как-то совместим с Си, то наверное достатоночно подключить библиотеки с Pocketpshinx в C# builder.... |
Сообщ.
#89
,
|
|
|
zamir
Может подскажете. У меня стоит задача распознать слова (английские и русские) и записать их в определенном порядке в таблицу Excel. Где это проще и лучше будет реализовать? Я начинающий. |
Сообщ.
#90
,
|
|
|
можно использовать тот-же pocketsphinx
если прямо русские или английские - то надо обобщить все фонемы а языковую модель создать из русских и английских слов можно просто запускать програму и парсить вывод (я так делаю так как на Си не програмирую) а можно написать собственое приложение используя библиотеки pocketsphinx Если нужна помощь, то думаю можно финансово заинтересовать Николая Шмырёва (одного из разработчиков этого продукта) и он вам возможно поможет реализовать задуманное. |