Russian

Flat
Найденные ошибки
User: zamir
Date: 10/26/2010 8:39 am
Views: 11360
Rating: 12

1) в файле описания указано название файла *ira_ru0* но таких файлов не существует. Необходимо заменить на ira_ru0 на ira_ru_0

2) из файла описания необходимо убрать следующие имена файлов:

ego-20100205-one/wav/ru_0012

ego-20100205-one/wav/ru_0013

ego-20100205-one/wav/ru_0014

ego-20100205-one/wav/ru_0015

ego-20100205-one/wav/ru_0016

ego-20100205-one/wav/ru_0017

так как этих файлов не существует

3) в описании "пофранцузски" заменить на "по-французски"

"чтото" на "что-то"

4) в словаре посторяются некторые слова и есть знак "+"

 

Ещё не удалось собрать РАБОЧУЮ голосовую модель используя выложенный sphinx_train.cfg

програма предложила использовать следующие параметры

CFG_FEATURE = "1s_12c_12d_3p_12dd"

CFG_STATESPERHMM = 5

после этого модель собралась но не работает

ошибка такая:

FATAL_ERROR: "fe_sigproc.c", line 397: WTF, 4218.750000 < -15.625000 > 4765.625000

возможно из-за того что rate не указал в файле feat.params, разбираюсь...

ещё вопрос: Если я добавляю ещё голосовые файлы, то всю процедуру надо повторить или есть возможность "доучить"?

Re:
User: zamir
Date: 10/27/2010 9:48 am
Views: 198
Rating: 10

дело оказалось в sample rate

shinx train форсирует использование sample rate 16000

используя текущую базу записей получается голосовая модель лучшего качества на мой взгляд

Re:
User: Andrey
Date: 10/27/2010 10:29 am
Views: 178
Rating: 13

zamir, а вы используете модель с пакетом sphinx?

Я попробовал модель в программе pocketsphinx 0.6.1, но программа выдает исключительно (null). С любыми английскими языками все в порядке. В чем может быть дело?

Re:
User: zamir
Date: 10/27/2010 12:05 pm
Views: 169
Rating: 11

я использовал программу с пакетом unimrcp которая использует библиотеки pocketshinx 0.6.1

что касаемо вашего эксперимента думаю проблема в лангвистической модели. в ней чего-то не хватает

я поднимал эту проблему здесь:

http://www.voxforge.org/home/forums/other-languages/russian/----4

для тесрирования вам видимо придётся установить shinx3 и кодировку koi8-r

либо попробовать подсунуть собственную мини модель языка (grammar словарь) для pocketshinx (unimrcp так и делает)

вот его пример, на котором я как раз тестировал (кодировку только одинаковую установите для словарей)

содержание файла cmudict.jsgf:

#JSGF V1.0;

grammar camera;

public <camera> = ( <doo1> | <doo2> );
<doo1> = <do1> ( <cam1> <prenum> <num1> | <num2> <cam1> );
<doo2> = <do2> ( <cam2> <prenum> <num1> | <num3> <cam2> | <allcam> );
<do1> = ( включить | подключить | выключить | отключить | опросить );
<do2> = ( опросить | состояние | статус )+ ;
<cam1> = ( камеру | видео-камеру );
<cam2> = ( камеры | видео-камеры );
<allcam> = ( всех камер | каждой <cam2> );
<prenum> = [ номер ];
<num1> = ( один | два | три | четыре | пять | шесть | семь | восемь | девять );
<num2> = ( первую | вторую | третью | четвертую | пятую | шестую | седьмую | восьмую | девятую );
<num3> = ( первой | второй | третьей | четвертой | пятой | шестой | седьмой | восьмой | девятой );

Re:
User: zamir
Date: 10/27/2010 12:09 pm
Views: 231
Rating: 11

вот на всякий случай мини-словарь для этой grammar модели

да  d aa
нет  nn ee t
остроухов  a s t r a uu h ay v
остроухова  a s t r a uu h ay v a
замир  z ay mm i r
лариса  l a rr ii s a
номер  n oo mm ae r
один  a dd ii n
первую  pp ee r v ur j u
первой  pp ee r v ay j
два  d v aa
вторую  f t a r uu j u
второй  f t a r oo j
три  t rr ii
третью  t rr ee tt j u
третьей  t rr ee tt j ae j
четыре  ch i t yy rr e
четвертую  ch ae t vv i r t uu j u
четвертой  ch i t vv ee r t ay j
пять  pp aa tt
пятую  pp aa t ur j u
пятой  pp i t oo j
шесть  sh ee s tt
шестую  sh y s t uu j u
шестой  sh y s t oo j
семь  ss ee mm
седьмую  ss i dd m uu j u
седьмой  ss i dd m oo j
восемь  v oo ss ae mm
восьмую  v a ss m uu j u
восьмой  v a ss m oo j
девять  dd ee vv ae tt
девятую  dd i vv aa t ur j u
девятой  dd i vv aa t ay j
десять  dd ee ss ae tt
десятую  dd i ss aa t ur j u
десятой  dd i ss aa t ay j
включить  f k ll ur ch ae tt
выключить  v yy k ll ur ch ae tt
подключить  p a t k ll ur ch ae tt
отключить  a t k ll ur ch ae tt
опросить  a p r a ss ii tt
состояние  s ay s t a j aa nn ae j e
статус  s t aa t ur s
всех  f ss ee h
камер  k aa mm ae r
каждой  k aa zh d ay j
камеру  k aa mm ae r u
камеры  k aa mm ae r y
видео-камеру  vv ii dd e oo k aa mm ae r u
видео-камеры  vv ii dd e oo k aa mm ae r y

Re: test result
User: zamir
Date: 10/28/2010 6:40 am
Views: 280
Rating: 11

вот результат тестирования:

msu_ru_nsh.cd_cont_1000_8gau_8000:
INFO: pocketsphinx.c(805): wav/akaalxcoaakaInterocitor-20100322-dqk/wav/ru_0054: к в в он с у быть её в щёки мы у у в в закрытые или (-14444154)

msu_ru_zero.mllt_cd_cont_1000: (с включенным LDA)
INFO: pocketsphinx.c(805): wav/akaalxcoaakaInterocitor-20100322-dqk/wav/ru_0054: в он целует её щёки мы долго мы закрытые веки (-9100920)

msu_ru_zero.cd_cont_1000:
INFO: pocketsphinx.c(805): wav/akaalxcoaakaInterocitor-20100322-dqk/wav/ru_0054: в он целует её щёки мы под в закрытые веки  (-10362792)

база слов была ограничена (~150 слов) при помощи grammar словаря

p.s. оригинальный текст:

Он целует её в щёки в лоб в закрытые веки

Я ещё вот чего думаю... если я говорил бы "в лоб", я бы может и сказал "l ay p", но если бы попросили продиктовать для распознавания речи, то использовал бы всё таки звук буквы "б"

Re: test result
User: nsh
Date: 10/29/2010 1:51 pm
Views: 199
Rating: 11

> вот результат тестирования:

Тестирование всегда делается на базе 100-200 предложений. Одно ни о чём не говорит. Кроме того, проверять надо на дикторе, не входящем в тренировочную базу

> Я ещё вот чего думаю... если я говорил бы "в лоб", я бы может и сказал "l ay p", но если бы попросили продиктовать для распознавания речи, то использовал бы всё таки звук буквы "б"

"в лоб в закрытые веки" тяжело сказать через б. Правильная транскрипция должна быть "l oo p", о с ударением.

Re: test result
User: Visitor
Date: 10/30/2010 2:20 am
Views: 3834
Rating: 14

я Вас понял, но всё-же на мой вгляд некую субъективную оценку голосовой модели можно получить и иным путём
например берём файл 2008 года
anonymous-20080731-chz/wav/ru_0006 (Глаза ленивые серо-карие и так же как у той женщины с искоркой)
который наверняка использовался для тренировки обеих голосовых моделей
делаем gramm модель примерно на 400 слов произносимых в любом порядке (которая также  содержит слова из звукового файла ru_0006)
и тестируем распознавание различными голосовыми моделями

msu_ru_nsh.cd_cont_1000_8gau_8000
весьма долго напрягался pocketsphinx и выдал следующий результат
  ru_0006: к в в был на ленивые сердце мой и так же как вот мы чем в над под той

msu_ru_zero.cd_cont_1000

по каким-то причинам гораздо быстрее произошло распознавание и выдался следующий результат
  ru_0006: в глаза ленивые серо-карие сеть так же по тёплый женщины с искоркой

различия на мой взгляд всё-таки видны и можно делать некую оценку

я прослушал akaalxcoaakaInterocitor-20100322-dqk/wav/ru_0054.wav - мне показалось что там именно звук "б"

 

Re: Найденные ошибки
User: nsh
Date: 10/27/2010 5:17 pm
Views: 221
Rating: 13

 

 > 1) 2) 3)

Спасибо, исправили

> 4)

Это не ошибка

> Ещё не удалось собрать РАБОЧУЮ голосовую модель используя выложенный sphinx_train.cfg

С этим я смотрю Вы и сами в состоянии справиться. Главное, больше оптимизма в деле проявлять.

 

Re: autofix
User: zamir
Date: 10/28/2010 3:32 am
Views: 235
Rating: 13

Это Вам Спасибо ;)

в словаре есть "за+ногу", но нет "заногу"

в обучающих фразах:

i -> первая

зеленый -> зелёный

вот скрипт которым я исправляю положение:

#!/usr/bin/perl

use utf8;

my $name = 'msu_ru_zero';
my $infilename = 'ALLPROMPTS';
my $outfilename = $name.'_train.transcription';
my $idsfilename = $name.'_train.fileids';

open(IN,  "<$infilename") or die ("need input file name");
open(OUT, ">$outfilename") or die ("need output file name");
open(IDS, ">$idsfilename") or die ("need output file name");

while (my $prompt = <IN>) {
    chomp $prompt;
    my ($file,$text) = split(/[\s]+/,$prompt,2);
    $file =~ s/ira_ru0/ira_ru_0/;
    $file =~ s/mfc/wav/;
    if ($file =~ /ego-20100205-one\/wav\/ru_0012/) { next; }
    if ($file =~ /ego-20100205-one\/wav\/ru_0013/) { next; }
    if ($file =~ /ego-20100205-one\/wav\/ru_0014/) { next; }
    if ($file =~ /ego-20100205-one\/wav\/ru_0015/) { next; }
    if ($file =~ /ego-20100205-one\/wav\/ru_0016/) { next; }
    if ($file =~ /ego-20100205-one\/wav\/ru_0017/) { next; }

    utf8::decode($text);
    $text =~ s/чтото/что-то/g;
    $text =~ s/пофранцузски/по-французски/g;
    $text =~ s/з\+аногу/заногу/g;
    $text =~ s/зеленый/зелёный/g;
    $text =~ s/ - / /g;
    $text =~ s/ i / первая /g;
    $text =~ s/[\,\.\?\!\;\:]/ /g;
    $text =~ s/[\s]+/ /g;
    $text = lc($text);
    utf8::encode($text);

    print IDS "$file\n";
    my ($dir1,$dir2,$filename) = split(/\//,$file,3);
    print OUT "<s> $text </s> ($filename)\n";
}

close(IN);
close(OUT);
close(IDS);

PreviousNext