-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
182 lines (169 loc) · 21.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html>
<html lang="en">
<head>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>
Compose song lyrics, poetry or rap and improve your English - with an advanced rhyming dictionary based on CMUDict and speech formant synthesizer, lookup of word forms or common phrases by part of speech, sentence parser and text editor with spell and punctuation checking.
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="preconnect" href="https://fonts.gstatic.com"/>
<link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/>
<link rel="stylesheet" href="index.css"/>
</head>
<body onload="loadLanguages();" onclick="var tg=event.target;while(!tg.title){tg=tg.parentNode;}if(tg.tagName){mobile.innerText=tg.title;}">
<!--https://etherpad.wikimedia.org/p/RYC4rG0XlnKEz-bbj3YO-->
<iframe name="synth" id="synth" src="synth/index.htm"></iframe>
<div id="library"><input type="text" id="artist" placeholder="Artist" onchange="loadLibrary(this.value, song.value);"/><input type="text" id="song" placeholder="Song" onchange="loadLibrary(artist.value, this.value);"/><div id="library_iframe" class="notranslate"></div>
<a id="youtube_music" href="" title="YouTube Music" target="_blank" onfocus="this.href='https://music.youtube.com/search?q='+encodeURIComponent(artist.value+'+'+song.value);"><i class='material-icons notranslate'>video_library</i> <b>YouTube Music</b></a>
<a id="lyrics_translate" href="" title="LyricsTranslate" target="_blank" onfocus="this.href='https://lyricstranslate.com/en/'+artist.value.replace(/ /g, '-')+'-'+song.value.replace(/ /g, '-')+'-lyrics.html';"><i class='material-icons notranslate'>sticky_note_2</i> <b>LyricsTranslate</b></a><br/>
<a id="youtube" href="javascript:(function(){document.location.href=document.location.href.replace('music.youtube.com', 'www.youtube.com');})();" title="Redirect from YouTube Music to YouTube to use adblocker"><i class='material-icons notranslate'>bookmark_add</i> Bookmarklet</a>
<a id="music_styles" href="https://en.wikipedia.org/wiki/List_of_music_styles" title="Music genres on Wikipedia" target="_blank"><i class='material-icons notranslate'>library_music</i> Music genres</a>
</div>
<div id="resources">
<div><a id="grammar_ref" href="https://www.bbc.co.uk/learningenglish/" target="_blank"><b><img src="icons/BBC.svg" height="11" alt="BBC"/> Learning English</b> Grammar</a><br/>
<a href="https://www.bbc.co.uk/learningenglish/english/basic-grammar-guide" target="ltwf" onclick="basic_words.style.visibility='visible';"><i>Easy</i></a> | <a href="http://www.bbc.co.uk/learningenglish/intermediate-grammar-guide" target="ltwf" onclick="basic_words.style.visibility='visible';"><i>Medium</i></a> | <a href="http://www.bbc.co.uk/learningenglish/upper-intermediate-grammar-guide" target="ltwf" onclick="basic_words.style.visibility='visible';"><i>Medium 2</i></a> | <a href="http://www.bbc.co.uk/learningenglish/advanced-grammar-guide" target="ltwf" onclick="basic_words.style.visibility='visible';"><i>Hard</i></a></li>
</div><br/>
<div><a id="vocabulary_ref" href="https://learnthesewordsfirst.com/about/what-can-you-read.html" title="Vocabulary" target="ltwf" onclick="basic_words.style.visibility='visible';"><b>What you can read 🢒</b></a>
</div>
<p><a id="oxford" href="https://elt.oup.com/learning_resources/subjects/grammar/" target="_blank"><b>Oxford University Press</b></a> grammar and vocabulary practice exercises.
<a id="cambridge" href="https://dictionary.cambridge.org/grammar/british-grammar/" target="_blank"><b>Cambridge English Grammar</b></a> clear explanations with hundreds of examples.
</p>
<p><a id="languagetool" href="https://languagetool.org/" target="_blank"><b>LanguageTool</b></a>’s multilingual grammar, style, and spell checker is used by millions of people around the world.
</p>
<p><a id="ms_editor" href="https://support.microsoft.com/en-us/office/check-grammar-and-spelling-with-the-microsoft-editor-browser-extension-49dd8e1b-3dfa-4ba7-a40e-1bc120f9a71c" target="_blank"><b>Microsoft Editor</b></a> browser extension checks for grammar and spelling mistakes, and it makes suggestions for refining your writing, like addressing passive voice or wordiness.
</p>
<p><a id="ms_audio" href="https://speech.microsoft.com/audiocontentcreation" target="_blank"><b>Microsoft Audio content creation</b></a> enables you to <a href="https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-synthesis-markup" target="_blank">visually control</a> speech attributes in real-time – such as voice style, rate, pitch, volume, pronunciation and breaks. It allows you to quickly create more accurate, expressive and customized audio.
</p>
<p><a id="inputtools" href="https://www.google.com/inputtools/try/" target="_blank"><b>Google Input Tools</b></a> makes it easy to type (or handwrite) in the language you choose, anywhere on the web.
</p>
<p><a id="cefr" href="http://englishprofile.org/wordlists/text-inspector" target="_blank"><b>English Profile TextInspector</b></a> checks the difficulty of any text for non-native speakers by levels of words in order of their learning by a common European standard (CEFR).
</p>
<p><a id="coca" href="https://www.english-corpora.org/coca/" target="_blank"><b>Corpus of Contemporary American English</b></a> contains more than one billion words of text from eight media sources: spoken, fiction, popular magazines, newspapers, academic texts, TV and Movies subtitles, blogs, and other web pages.
</p>
<!-- https://elsaspeak.com/en/ -->
</div>
<div id="basic_words">
<iframe id="ltwf" name="ltwf" src="https://learnthesewordsfirst.com/LearnTheseWordsFirst.html" width="310" height="232"></iframe>
</div>
<div id="metadata">
<iframe name="genre" id="genre" src="genre.htm" onload="gform=this.contentWindow.location.search.slice(1).split('&');setCookies(true);getCookie();"></iframe>
</div>
<div id="mobile">On mobile, switch the system keyboard to floating mode.</div>
<div id="credits">
<p>Reverse phonetic dictionary, includes a lyrics editor and vocal synthesizer. Licensed under the GNU AGPL-3.0, hosted on <a href="https://github.com/freealise/phonetic" title="Github" target="_blank"><u>GitHub</u></a> and <a href="https://script.google.com" title="Google Script" target="_blank"><u>Google Script</u></a>.</p>
<p>Separating vowels and consonants for slant rhyme and alliteration within a line has been inspired by rap and Hebrew language, vocal synthesis by the <a href="https://www.g200kg.com/renoid/" target="_blank"><u>Vocaloid</u></a> and <a href="http://arss.sourceforge.net/" target="_blank"><u>ARSS</u></a>.</p>
<p>Dictionary by <a href="http://www.speech.cs.cmu.edu/cgi-bin/cmudict" title="Carnegie Mellon University" target="_blank"><u>CMU</u></a>, sorted by frequency with <a href="https://phrasefinder.io/" title="PhraseFinder" target="_blank"><u>PhraseFinder</u></a> API based on <a href="https://books.google.com/ngrams" title="Google Books Ngrams" target="_blank"><u>Google Books Ngrams</u></a>, parts of speech determined according to the latter.</p>
<p>Thanks to <a href="https://www.gearspace.com/board/showpost.php?p=11559456&postcount=10" title="jerry123 from GearSpace" target="_blank"><u>jerry123</u></a> and Max Martin for the idea of phonetic songwriting, <a href="https://englishwithkim.com/" title="English with Kim" target="_blank"><u>English with Kim</u></a> for clarifying pitch variation, <a href="https://savethecat.com/" title="Save the Cat" target="_blank"><u>Blake Snyder</u></a>, <a href="https://mckeestory.com/" title="McKee Seminars" target="_blank"><u>Robert McKee</u></a> and <a href="https://storygrid.com/" title="Story Grid" target="_blank"><u>Shawn Coyne</u></a> for story structure.</p>
</div>
<div id="trends_chart"></div>
<div id="wiki_"></div>
<div id="dict">
<div id="area" class="notranslate">
<div class="l"><a id="dl" href="#"></a><button title="Download" id="download" onclick="download();"><i class='material-icons notranslate'>download</i></button><button title="Upload" id="upload" onclick="upload();"><i class='material-icons notranslate'>upload</i></button><input type="file" id="ul" onchange="upload();"/>
<select title="Setlist" name="toc" id="toc" onchange="res.scrollTo(0,this.value*16);"><option value="0">Setlist</option></select></div>
<form action="#">
<div id="outline"><hr/></div>
<div id="highlight"><pre id="hl"></pre></div>
<textarea title="Album" placeholder="Title Verse Chorus Verse Verse Verse" id="res" name="res" onclick="keepSymbols(null);" onkeyup="keepSymbols(event.key);if(event.key=='Enter'){highlightText();getSentence();}else if(event.key==' ' || event.key=='Backspace' || event.key=='Delete' || event.ctrlKey || event.metaKey){colorPhonemes();}" onkeydown="if(event.key.length==1 && kbrd[event.key] && event.getModifierState('CapsLock') && !event.ctrlKey && !event.metaKey){addPhoneme(kbrd[event.key], 0);}" onmouseup="" ontouchup="" onfocus="ctl=this;" onscroll="highlight.scrollTo(this.scrollLeft,this.scrollTop);outline.scrollTo(0,this.scrollTop);" onchange="setCookies(false);addTitles();"></textarea>
<input type="submit" id="submit"/>
</form>
</div>
<div class="l">
<audio src="" controls></audio><button id="speech" onclick="loadSpeech();" title="Speech"><i class='material-icons notranslate'>record_voice_over</i></button><select id="accent" title="Accent"><option value="US">US</option><option value="UK">UK</option><option value="AU">AU</option></select>
</div>
<div class="l">
<input type="text" name="phrase" id="phrase" list="_phrase" title="Phrase" placeholder="Phrase" onfocus="ctl=this;"/><datalist id="_phrase"></datalist>
<button onclick="if(phrase.value.length==0){phrase.value=selectText();}loadSyntax(phrase.value);" id="parse" title="Parse"><i class='material-icons notranslate'>more</i></button>
<select onchange="addPhoneme(this.value, 'transparent');" id="pos" title="Part of speech"></select>
</div>
<div class="l"><input type="text" id="word" list="_word" title="Word or transcription" placeholder="Word or transcription" onkeydown="if(a_c===false && this.value.length>2 && event.key=='Enter'){autoCompleter(this.value);ssp(this.value);}" onblur="if(a_c===false && this.value.length>2){autoCompleter(this.value);ssp(this.value);}" onfocus="ctl=this;"/><datalist id="_word"></datalist><button onclick="if(word.value.length==0){word.value=selectText();}findWords();" id="search" title="Search"><i class='material-icons notranslate'>search</i></button><button onclick="if(word.value.length==0){word.value=selectText();}loadMorph();" id="morph" title="Morph"><i class='material-icons notranslate'>spellcheck</i></button></div>
<div class="l"><input type="text" id="vowels" list="vowels_" title="Vowels" placeholder="Vowels" onkeyup="if(a_c===false && this.value.length>1 && event.key!='ArrowRight' && event.key!='ArrowLeft'){loadIndex(this.value,'A');}" onblur="if(a_c===false && this.value.length>1){loadIndex(this.value,'A');}" onfocus="ctl=this;"/><datalist id="_vowels"></datalist><datalist id="vowels_"></datalist><input type="text" id="consonants" list="consonants_" title="Consonants" placeholder="Consonants" onkeyup="if(a_c===false && this.value.length>1 && event.key!='ArrowRight' && event.key!='ArrowLeft'){loadIndex(this.value,'B');}" onblur="if(a_c===false && this.value.length>1){loadIndex(this.value,'B');}" onfocus="ctl=this;"/><datalist id="_consonants"></datalist><datalist id="consonants_"></datalist><button onclick="splitWord();" id="split" title="Split"><i class='material-icons notranslate'>subdirectory_arrow_left</i></button></div>
<pre oncontextmenu="return false;" id="keys_">
<span class="notranslate"><span class="u"><a title="b"> </a><a title="p"> </a></span> <span class="u"><a title="d"> </a><a title="t"> </a></span> <span class="u"><a data-alt="jh" title="ʤ"> </a><a data-alt="ch" title="ʧ"> </a></span> <span class="u"><a title="g"> </a><a title="k"> </a></span>
<span class="u"><a title="v"> </a><a title="f"> </a></span> <span class="u"><a data-alt="dx" title="ð"> </a><a data-alt="th" title="θ"> </a></span> <span class="u"><a data-alt="zh" title="ʒ"> </a><a data-alt="sh" title="ʃ"> </a></span> <span class="u"><a title="z"> </a><a title="s"> </a></span> <span class="u"><a data-alt="r " title="ɹ"> </a><a title="h"> </a></span>
<span class="u"><a title="w"> </a><a title="m"> </a></span> <span class="u"><a title="_"> </a></span> <span class="u"><a title="n"> </a><a data-alt="ng" title="ŋ"> </a></span> <span class="u"><a title="l"> </a><a data-alt="y " title="j"> </a></span></span>
<a href="javascript:undo();" title="Undo"><i class='material-icons notranslate' id='undo'>undo</i></a> <a title="Wildcard" href="javascript:" onclick="addPhoneme('*', 'transparent');">* </a> <a title="Space" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="addPhoneme(' ', 'transparent');">⎵ </a> <a title='Notation' onmousedown="mobile.innerText=this.title;" href='javascript:' onclick="addPhoneme('⸽', 'transparent');">⸽</a> <a title="Symbols to use" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="kb_symbols();"><i class='material-icons notranslate' id="tgl">toggle_off</i></a></pre>
<pre oncontextmenu="return false;" id="keys"><span class="notranslate"><select title="i"></select><select title="ɪ"></select><select title="eɪ"></select><select title="ɛ"></select><select title="æ"></select><select title="ə"></select><select title="ʌ"></select><select title="ɑ"></select><select title="ɔ"></select><select title="oʊ"></select><select title="ʊ"></select><select title="u"></select></span>
<a title="Any stress with any vowel" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="addPhoneme('_', 'transparent');"><span class="notranslate">_ </span></a><a title="No stress with any vowel" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="addPhoneme('_·', 'transparent');"><span class="notranslate">_·</span></a><a title="Primary stress with any vowel" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="addPhoneme('_ˈ', 'transparent');"><span class="notranslate">_ˈ</span></a><a title="Secondary stress with any vowel" onmousedown="mobile.innerText=this.title;" href="javascript:" onclick="addPhoneme('_ˌ', 'transparent');"><span class="notranslate">_ˌ</span></a><span class="notranslate"><select title="aɪ"></select><select title="ɔɪ"></select><select title="aʊ"></select></span></pre>
<div id="rows" title="Pitch and volume, sentiment levels" onmousedown="mobile.innerText=this.title;">
<div id="tone" class="notranslate"></div>
<select onchange="tone_.scrollTo(0,24*this.options.selectedIndex);" id="row" title="Symbols selector">
<option selected>· note</option>
<option>- volume</option>
<option title="external, internal">| sentiment</option>
</select>
</div>
</div>
<div id="nsm">∃ ⋯♡⎋⚟⍝⊙ᐶ
⎃⎁⊨ ␥⎚⎌ ✓⍻
⍩⍨≖⎉⛶‡ ❦⛼
∅¿≍∵⌥∴⚭⚮
⊹⯐∸⨪⟷↭וּ⛋
⧖⋈⊰⊱⇼⇹↔⥈
12‰∀⛆ ☟⌯⎇
¤ ⊂⋲≈ ⍜⍛ ¡≻</div>
<div id="links">
<a href="javascript:showPanel();" title="Synthesizer"><i class='material-icons notranslate'>piano</i> Synthesizer</a><br/>
<a href="javascript:showPhonemes();" title="Keyboard"><i class='material-icons notranslate'>keyboard_hide</i> Keyboard</a><br/>
<a href="javascript:showTooltips();" title="Tooltips"><i class='material-icons notranslate'>wysiwyg</i> Tooltips</a><br/>
<a href="javascript:showGenre();" title="Genre"><i class='material-icons notranslate'>flaky</i> Genre</a><br/>
<a href="javascript:showTrends();" title="Google Trends"><i class='material-icons notranslate'>auto_graph</i> Trends</a><br/>
<a href="javascript:showLibrary();" title="Musixmatch"><i class='material-icons notranslate'>lyrics</i> Library</a><br/>
<a href="javascript:showWiki();" title="Wikipedia"><i class='material-icons notranslate'>extension</i> Wiki</a><br/>
<a href="javascript:showBasicWords();" title="Learn These Words First"><i class='material-icons notranslate'>category</i> Vocabulary</a><br/>
<a href="javascript:window.open('/#gsc.tab=0&gsc.sort=&gsc.q='+getQuery(), '_blank', 'width=320,height=480,status=no,menubar=no');" title='Dictionary search'><i class='material-icons notranslate'>abc</i> Examples</a><b>🢒</b><br/>
<a href="javascript:window.open('https://translate.google.com/?sl=en&tl='+sl+'&text='+getQuery()+'&op=translate', '_blank', 'width=320,height=480,status=no,menubar=no');" title='Google Translate'><i class='material-icons notranslate'>translate</i> Translate</a><b>🢒</b><br/>
<a href="javascript:window.open('https://books.google.com/ngrams/graph?content='+getQuery()+'&year_start=1800&year_end=2019&corpus=en-2019&smoothing=50', '_blank', 'width=320,height=480,status=no,menubar=no');" title='Google Books Ngrams'><i class='material-icons notranslate'>query_stats</i> Phrases</a><b>🢒</b><br/>
<a href="javascript:" target="_blank" onfocus="orig_check();" title="Google Search"><i class='material-icons notranslate'>content_paste_search</i> Originality</a><b>🢒</b><br/>
<a href="javascript:window.open('https://www.google.com/search?q='+word.value+'+definition', '_blank', 'width=320,height=480,status=no,menubar=no');" title='Oxford Dictionary'><i class='material-icons notranslate'>manage_search</i> Definition</a><b>🢒</b><br/>
<a href="javascript:showResources();" title="Grammar"><i class='material-icons notranslate'>link</i> Grammar</a><br/>
<a href="javascript:showCredits();" title="Credits"><i class='material-icons notranslate'>copyright</i> Credits</a><br/>
<a href="javascript:showLinks();" title="Share"><i class='material-icons notranslate'>share</i> Share</a> <a onfocus="this.href='https://www.facebook.com/sharer/sharer.php?u=https://freealise.com&hashtag=%23freealise"e='+res.value.split('\n').join(' / ');" href="javascript:" target="_blank" title="Facebook"><i class='material-icons notranslate'>facebook</i></a>
<a onfocus="this.href='https://twitter.com/intent/tweet/?url=https://freealise.com&hashtags=freealise&text='+res.value.split('\n').join(' / ');" href="javascript:" target="_blank" title="Twitter"><svg width="20" height="20" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path fill="black" d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"></path></svg></a>
<!--<a id="share" href="javascript:window.open('https://www.blogger.com/blog-this.g?t='+res.value, 'blog');" title="Share"><i class='material-icons notranslate'>share</i> Share</a>--><br/>
<a href="javascript:showLinks();" title="Language"><i class='material-icons notranslate'>language</i></a> <select id="languages" size="1" onchange="sl=this.options[this.selectedIndex].value;"></select><select id="corpus" size="1" onchange="">
<option value="26" selected>English 2019</option>
<!--<option value="28">American English 2019</option>
<option value="29">British English 2019</option>
<option value="27">English Fiction 2019</option>
<option value="34">Chinese (simplified) 2019</option>
<option value="30">French 2019</option>
<option value="31">German 2019</option>
<option value="35">Hebrew 2019</option>
<option value="33">Italian 2019</option>
<option value="36">Russian 2019</option>
<option value="32">Spanish 2019</option>
<option value="17">American English 2012</option>
<option value="18">British English 2012</option>
<option value="23">Chinese (simplified) 2012</option>
<option value="15">English 2012</option>
<option value="16">English Fiction 2012</option>
<option value="19">French 2012</option>
<option value="20">German 2012</option>
<option value="24">Hebrew 2012</option>
<option value="22">Italian 2012</option>
<option value="25">Russian 2012</option>
<option value="21">Spanish 2012</option>
<option value="5">American English 2009</option>
<option value="6">British English 2009</option>
<option value="11">Chinese (simplified) 2009</option>
<option value="0">English 2009</option>
<option value="4">English Fiction 2009</option>
<option value="1">English One Million 2009</option>
<option value="7">French 2009</option>
<option value="8">German 2009</option>
<option value="9">Hebrew 2009</option>
<option value="12">Russian 2009</option>
<option value="10">Spanish 2009</option>
-->
</select><select id="voiceSelect"></select><br/>
<a href="javascript:showLinks();" title="Show links"><i class='material-icons notranslate'>menu_open</i></a>
</div>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="tts.js"></script>
</body>
</html>