Показать сообщение отдельно
  #3 (permalink)  
Старый 15.01.2019, 21:38
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Цитата:
возможно/невозможно такое! Будет/не будет работать в anki?
Да, возможно! Будет работать, там используется webkit!

Цитата:
в случае если печатается неправильная буква то она бы не пропечатывалась и при этом воспроизводился бы звук ошибки.
Такой код выглядит, например, так
oninput = ({ target }) => {
	if(target !== inputField) return;

	const originalValue = target.value.toLowerCase();
	const checkedValue = `${target.value.toLowerCase()}\n${word}`.match(/(.*).*\n(\1)/)[1];

	if(originalValue !== checkedValue) {
		hitSound.play();
	}

	if(originalValue === word) {
		reachedSound.play();
	}

	target.value = checkedValue;	
};

где inputField представляет текстовое поле, word — ответ, hitSound — аудио ошибки, когда введена неправильная буква, reachedSound — звук победы, вы наконец-то ввели слово!

Цитата:
диктант, возможно ли?
Допустим, носитель языка произносит ряд слов на английском языке, а вам нужно их правильно записать. Программно это может выглядеть так — у вас на экране есть кнопка и текстовое поле. При нажатии на кнопку раздается голос, произносящий английское слово. Ваша задача постараться правильно напечатать это слово. Как вы и говорили, в случае если печатается неправильная буква, то она не пропечатывается и при этом воспроизводится звук ошибки. Я думаю, что когда слово напечатано, то можно открыть промежуточный экран, где можно, смотря на слово, послушать как оно звучит, возможность открыть это слово в стороннем приложении, где например, показан перевод и примеры использования этого слова. Ну и разумеется, кнопка перехода к следующему слову.

Процесс диктанта заключается в последовательном чередовании двух экранов. Снимки экрана приложения, которое я написал, код смотри далее.


Рис. 1. Экран, на котором предлагается ввести озвученное слово.


Рис. 2. Экран, появляющийся после правильно введённого слова, на котором предлагается узнать больше и продолжить диктант.

Самой первой трудностью оказалось найти слова, какие именно слова использовать для диктанта? В итоге остановился на списке из 850 слов английского языка. Все эти слова обозначают простые понятия, обычно используемые в повседневной жизни. https://en.wiktionary.org/wiki/Appen...lish_word_list

Слова были просто скопированы и обработаны в консоли браузера при помощи этого кода(не три слова, а все которые там были, результат, вы увидите в программе между тегами <template>)
[...[...new Set(

`account, act, addition`

.split(/[\s,\n]+/))].sort().join(" ").matchAll(/.{70}\S*/g)].map(l => l[0].trim()).join("\n")
matchAll не является стандартом, но кто тревожится, когда я только один раз у себя на компьютере запустил этот код!

Далее нужно, чтобы эти слова кто-то читал. Есть замечательный ресурс https://forvo.com/, где носители почти всех языков мира произносят всевозможные слова на их родных языках. Но, к сожалению, API для программистов почему-то платное.
Поэтому произношения слов я взял с oxfordlearnersdictionaries.com.(там нет API? но я просто посмотрел, как там устроена кнопка)

Звуки ошибки (не та буква) и победы(наконец-то ввели слово правильно) взял из chrome://dino

Код получился таким широким, поскольку там захардкодены звуки.

<p data-height="700" data-theme-id="0" data-slug-hash="YdgpwK" data-default-tab="result" data-user="Malleys" data-pen-title="Английский диктант" class="codepen">See the Pen <a href="https://codepen.io/Malleys/pen/YdgpwK/">Английский диктант</a> by Malleys (<a href="https://codepen.io/Malleys">@Malleys</a>) on <a href="https://codepen.io">CodePen</a>.</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>

Код сюда не влез, поэтому сделал через codepen https://codepen.io/Malleys/pen/YdgpwK?editors=1000 Да, вы можете использовать этот код не только в Anki, но прямо тут, чтобы учиться слышать английские слова.

Получилось что-то очень быстрый диктант, введу слово и Enter, введу слово и Enter. Не слишком ли простой набор слов? А как у вас, получается?
Изображения:
Тип файла: jpg pic1.jpg (7.6 Кб, 2 просмотров)
Тип файла: jpg pic2.jpg (8.2 Кб, 2 просмотров)

Последний раз редактировалось Malleys, 15.01.2019 в 22:10.
Ответить с цитированием