Axfc is a jerk. Here's my post on how to get downloads from there to work.

Multi-pitch CVVC banks do not work properly with the shareware A for automatic button!! Any articles where I complain about CVVC banks being broken is my own fault for not figuring it out sooner!!

Monday, May 1, 2023

So you want to write a Burmese recording list...

 That title is somewhat of a joke. I don't know anyone who wants to other than me who wants this, and I'm just doing it because I won't get the cooling pad for my tablet for a few days!

I have no idea which is politically correct between Burma and Myanmar. The United States officially calls the nation Burma, but many countries call it the official title of Myanmar. I did not look into the political landscape of the country before deciding to make this list... I just found out that there was a singer named Jewel who made the kind of music that makes me feel happy inside.

Because Wikipedia and SEAlang both call the language Burmese, I will continue to call the language Burmese.

Utan vs UTAU

Aside from my blog, I am primarily an Utan user. Utan is a private singing synth created by Hataori-P. As much as I love it, it would be difficult to teach to others, so it remains private.

The reason I bring it up is because of the differences between UTAU and Utan lists. The first is the issue of "- C" and "C -". While I'm sure for Japanese there is support for pure CV, in languages using custom phonemizers, there need to be those - C and C -. Long story short? Every single phoneme needs to touch another phoneme, and silence is a phoneme. In UTAU, that is not the case at all. If you are writing a list for UTAU, you do not need - C. In fact, a silence followed by a plosive, i.e. "- k", will be entirely useless and sound horrible if you use it because it is just silence that UTAU will normalize to sound like awful static. Utan does need "- k".

The other difference is that Utan picks phoneme segments automatically. I slap in the configurations and it knows what to do. However, in utau you are required to manually set "file.wav=alias". The utau system very much has its merits, as my English list had to use "dummy phonemes" so that the actual samples used were the intended samples. 

Dictionaries and Converters

There is one major division between languages that will change your entire workflow if you are doing a TTS (text to speech) friendly list. If the characters are Latin, you will need to use dictionaries to make sure that the TTS doesn't get confused. An example is gay in Spanish. I wanted the TTS to say gai, but gay is enough of a common word that the TTS assumed I meant gei. Another example is the TTS not believing something is a word and spells it out.

With languages that use a different script, you're less likely to need a dictionary. Except, you know, Cantonese where I actually did need to find common Chinese characters to replace the ones the TTS didn't recognize as real. As long as the characters are legal, the TTS should be able to spit out what you want without going into the trouble of finding actual words.

There are writing systems I'd be willing to try to learn for the purpose of covers. Thai looks pretty fun! But there's just something about Burmese that makes my brain confused. Thankfully, you don't actually need to learn the scripts to write the list thanks to online keyboards. Branah keyboards are generally based off of real life keyboards. Lexilogos has keyboards that are mechanically more difficult to use, especially on mobile, but are mentally much easier to use.

If you're not willing to learn whatever script you're making a list for, you will need converters for getting the lyrics for your covers. And... Wow, the pickings are very slim. The only one I could find was a GitHub project based off of the Wiktionary module {{my-IPA}}... Which I couldn't get to work on Wiktionary, despite being able to use the Korean and Spanish versions previously.

"... But I have friends!"

If you've got friends who are willing to record, then you will only need a converter for lyrics. If your friend speaks the language, then they can manually convert the lyrics for you. If you have a living, breathing person who takes instructions, though, your list suddenly can become extremely simple. Just say "okay, this makes this sound and this makes that sound, so make those sounds in that order, please."

If you are in that situation, please be kind and not ask for pointless things that will never come up just because you want full coverage. It can be tempting to add 'extras' for other languages, but... It's not advisable to muddy the waters and probably impossible to pull off with a TTS (though, for you, your friends make the TTS issue moot.) This isn't Synth V or VOCALOID where you're limited and need to squeeze out as much utility as possible - you can record Malay and Basa Jawa separately!

Starting the list

Before we start, the most important thing is actually finding a song you can use for the demo. If there's no song to use, then there's nothing to be sang and the list has no use. This can be difficult to do when it's hard to track down lyrics for songs.

Once you're sure you've found a song that inspires you that you can make a UST for, you need to start looking at the language.

Wikipedia is great. While at first it may be tempting to look at the phonemes, it is better to start by looking at what kind of list you will need to make. For example, a language like Japanese with only CV will need a different game plan than a language like Korean that allows for CVC. With CVC, you need to account for CC. 

Burmese has a syllable structure of C(G)V((V)C). When you see a parentheses, that means it is optional. Usually, you will see that syllable structures only have V as mandatory, but the initial C is in fact required. To 'have no consonant' requires the use of the null consonant: the glottal stop. While represented by ? in most cases in the vocal synth world, ? is used as a flag in UTAU and must be replaced by something else.

I write diphonic lists because that's the kind of person I am. However, looking at that syllable structure tells you how silly of a goose you can be. 

I am a very serious goose, so I can see that all I need is "- C", "C G", "C V", "G V", "V V", "V C", "V -". That looks like a lot! But we can instantly simplify it. I will not use a dictionary for this list, so I can do a traditional CVVC that looks very similar to a normal Japanese VCV or CVVC bank. This removes "- C", "C V", "V C" and "V -" from my to do list. The "V V" would actually just be "V" by VOCALOID English rules as it represents a diphthong. While the diphthongs use a vowel not in the CVVC section, Burmese diphthongs are limited to checked / closed syllables where they can only interact with ɰ̃ and ʔ. I know the last one is a glottal stop, but I haven't actually found out what the first one is yet. This also means that the "C C" section will be very easy.

Now, let's say you're a very silly goose and want the most advanced Burmese script possible. I'll plop this down again: C(G)V((V)C)

In most CVVChinese lists, consonant-glide pairs are reduced to one phoneme. From my understanding, the rules concerning glides are pretty intense. You can find those rules here (note, that's orthography and not phonology), which makes everyone's job easier! You could consolidate "C(G)" to just be more "C"s. That leaves you with CVVC. In CVVChinese and VOCALOID English, VV is just V (as mentioned before), so you could see it as CVC. Now, if you just just use VC for the final C, could the rest be VCV?! If you really wanted to, yeah. But should it be? It would be tempting to just write it all out, including illegal combinations if I still was the kid I was in high school, but that would be very inefficient. Studying the phonology and eliminating illegal characters would result in a much better list, but it would run into the issue of being mechanical because of the lack of control of the phoneme timings due to VCV.

You probably thought Phonemes would be first 

One of the best things about being the first person to write a recording list for a language is that you get to decide what will represent each phoneme. In all technicality, I believe Utan would let me just use IPA symbols for the funzies. That is a very bad idea.

For some languages, there's no question that the writing system is good enough that you just need to capitalize a few letters and you're good. Replacing u with M in Japanese CVVC would be more correct phonetically, but it would be silly. Same with Javanese - the romanization system is just really good that way.

Burmese is not that kind of language. First, we need to answer the question... What is ɰ̃? The answer, according to SEAlang... Is that it isn't a phoneme. It is a tool used for the nasalization of the preceding constant.

So, that brings us to my friend: X-SAMPA. It gets really annoying typing underscores all the time, so for this system, I'll ignore those. So nasalized u would be u~. The voiceless m will be m0. 

The one phonemizer I was able to find disagrees with SEAlang on the handling of ɰ̃. Who should I trust in the situation? I would go with the Southeast Asian Library, though this may cause some issues in the future when I need to actually convert lyrics.

This rolls over to a new question - what happens when a nasal vowel touches a consonant? I tested it with the TTS, and it's just more VC! This language just keeps throwing curve balls!

Writing the List - CVVC

With Thai, what specific consonant you use actually affects the tone. It looks like, despite there being some duplicate consonants, we don't need to factor in what consonant is better to use. 

One thing struck me right away: there were no specific characters for unvoiced consonants. The reason is that you put a little tootsie on the consonant to make it happen! Like so: မှာ.
With that, it's time to set up our phoneme chart for consonants. Because we're starting with all of the vowels being the same in each subsection, we don't exactly need to write those out yet. (Note: I choose which grapheme to use at random when there were multiple choices.)




Once written out, we run into our first illegal combinations. With Thai, it really is as simple as can be to mash consonants and vowels together, but before we even start with the first one, we find out that some consonants require us to use a different grapheme!

With all of that in mind, I present to you... The first CVVC recording.
မာနာညာငါမှာ.

The period is to make it TTS safe, of course. I have no idea if the unvoiced m sounds correct, but SEAlang agrees that it is the unvoiced m. I had gotten into a bad habit of not actually writing out the transcription and relying on converters, and that kind of made my hesitant to pick back up my Korean list when I had no idea what was going on. 

Now - the best idea would be to do all of the CVVC section and then move on, but I don't have the laptop cooling pad yet, so being finished with that section does me no good whereas explaining how to do the other sections would be great.

Writing the List - Glottal Stops

As I showed before, the diphonic segments needed are "- C", "C G", "C V", "G V", "V V", "V C", "V -".

As I said before, CVVC takes care of quite a bit... But then I remembered checked syllables. There would be two ways I can immediately think of to cover ?. The first is to see how much extra space there is at the end of each CVVC subsection. The other is to just have a section dedicated to closed syllables ending in ?. We don't even need "? ?" as a segment, because it would be the same as "? -" "- ?" All we need is for every constant to be touched by ?. Because all diphthongs are in closed syllables, this will also take care of the non-nasal VV.

Now, let us take a moment to mention tones. It's not too huge of a deal if we end up with not everything having the same tone. Except creaky voice - while it might be nice to include for realism, it sounds like it would mess with the frqs. We want to focus on having à, the low tone, as the tone marker. If you want to use the high tone, á, that also works. It doesn't seem like there's as much difference as in other tonal languages. But, if you start with low, it's best to keep with low. It's possible to be picky like this because of the fact that Burmese has a lot of ways of writing the same phonemes, but with different tones.

There is no option but to use checked tones for some vowels. 

So, thankfully, all of the standalone vowels have been used in the CVVC. Only U and I (put and bit in English) are only available in checked syllables. This does mean we will need a bit of redundancy - we'll have two copies of "? C" to cover the CV for U and I, but that's fine.

An example from that section would be this:

အစ်မစ်နစ်ညစ်ငစ်. ("? I ?" "m I ?" "n I ?" "ny I ?" "N I ?")

That section would cover the CV for I and U, and also the CC for "? C". (note: if it's not much more, I'll treat the diphthongs as standalone vowels for this section, redundancy be darned.)

Oh yeah, there's those nasal vowels.

So, thank goodness, other than the diphthongs, there's still no VV. Because a syllable can never begin with a vowel, this is essentially another CVVC section. Thankfully, we don't need to worry about /e/, /o/, /ə/ and /ɔ/. However, we're adding /ãĩ/ /ãũ/ /ẽĩ/ /õũ/. As a note, the nasalized diphthongs are only represented with the final vowel nasalized on SEAlang. Just to add a little more 'realism', I will represent them as, for example "a~ ~u" with "~u" as a consonant as opposed to a vowel. I wasn't going to, but I should also represent the regular "au" as "a -u". I won't go as far as adding a separate a phoneme for it, though. I love saving time and space! (Or will I?! It literally just depends how long the nasal versions are.)

I will also add redundancy here because I will just consider each of the diphthongs as one vowel for list making purposes, but I will configure them as a vowel and a consonant. So, this is literally just another CVVC section. (I'm not going to actually finish this list for a bit, so it may be possible that if it were finished, the nasalized diphthongs would be confined to just one CC sample, it really depends on how long it ends up.)

အိုင်မိုင်နိုင်ညိုင်ငိုင်. ("? a~ ~i"" ""m a~ ~i"" ""n a~ ~i"" ""ny a~ ~i"" ""N a~ ~i")

 I have no idea how to write the glides

Seriously, I read through the section on glides, and it was in one ear, out the other. There can be three diacritics on one consonant to indicate a glide, and I'm glad Burmese font is unusually huge on my phone. 

It will be no issue to just go through and find all valid combinations of C G, and the CVVC should have taken care of the G V.

Is that it?

Well, we can look back at the syllable structure.

C(G)V((V)C). 

The final C is only ?, and we tackled that.

C(G)V(V).

The VV is the diphthongs. The nasal ones are covered in the nasal section, and the regular should go in the checked section. That's not even fully necessary, as you can just include each diphthong once and use that to connect them, given you have the CV for the first part and the VC for the second. 

C(G)V.

I will write, likely not until I get the cooling pad because I need to have a lot of information on the screen, the glide section that will cover C G, and G V.

CV.

And, that was the first part! The CVVC! The only thing that can touch that C is vowels and a glottal stop, so I think we're done with the planning for now. Any corrections to my misunderstandings are appreciated in the comments!

There is one thing missing, though. @. ə is the only vowel allowed in minor syllables.

The SEAlang dictionary isn't exactly playing along. The way I'd want to do it is to just search for words using ə, but that's currently not working as it should. However, looking up two consonants in a row, like ကကတစ်, would give me "g @" and "@ d", so that's a start!

Final thoughts

I definitely don't know how helpful this was, but I hope it was.

Because I only did one line and not whole subsections, you didn't see the trick I use to make sure that I get all of the - C I need. 

Here is an example from my Cantonese list before I made it TTS friendly:
aa baa caa daa faa
faa gaa gwaa haa jaa
jaa kaa kwaa laa maa
maa naa ngaa paa saa
saa taa waa zaa aa
ai cai dai fai gai
gai gwai hai jai kai
kai kwai lai mai nai
nai ngai pai sai tai
tai wai zai bai ai
ong dong fong gong gwong
gwong hong joeng kong kwong
kwong long mong nong ngong
ngong pong song tong wong
wong zong bong cong ong

 You'll notice that the first consonant of each section changes and the consonant pattern differs between subsections because of it. The consonants used for - C are then folded back in to get the correct V C.

The next thing to say is that all of my lists, outside of English, are forced into a five mora format. I haven't ran into one yet that forces me to not use that format. Why do I do that? Five feels cozy. If the first VCV list for Japanese was six mora, then my lists would probably be six mora. But they're a cozy five syllables.

This is all for lists that use a script that allow you to go phonetically. How do you do a list that requires a dictionary? As glib as it sounds, open a dictionary and get to it! For my Javanese list I went backwards by vocal synth standards. I began with CC, not CVVC. It's a long list because there's a lot of CC to cover. I was able to make it smaller than it would have been otherwise because I could use the CV and VC already in the list from adding the CC parts. Just make sure that you have a good language to IPA converter if possible so that you can make sure that your transcriptions are correct!

Checking for completeness with a language with nearly full coverage (like Spanish or English) is rather easy as long as you have good transcriptions. Open the transcriptions in a program that allows for find and replace (Google Docs does it, but ignores special characters and is case insensitive) and just check each one one at a time. Type "b a". It's there? Good. Type "b e". It's not there? Find a place for it.

Don't feel pressure to fill up every line at once - leave question marks where you can't think of something with the right amount of syllables. It's not a requirement to always have the same number of syllables, but it makes me feel happy to see the uniformity.

Thanks to those of you who read this far! I definitely need to finish configuring the Cantonese and Basa Jawa banks I was working on as soon as I get the cooling pad. But it's totally a toss up between what language in my spreadsheet I made specifically for my Thai recording list gets made first. Maybe I'll put that spreadsheet aside and go straight to the Burmese spreadsheet... I really, really like making lists.

No comments:

Post a Comment