Inspiration 🏰
English literature students encountering medieval texts for the first time are generally faced with something like the following:
Sithen the sege and the assaut was sesed at Troye,
The borgh brittened and brent to brondes and askes,
The tulk that the trammes of tresoun ther wroght
Was tried for his tricherie, the trewest on erthe.
(Sir Gawain and the Green Knight, edited by Paul Battles, 2012, Broadview Press, lines 1-4)
And while they're still processing the odd words and spellings, students are told that on top of all that, Middle English is pronounced entirely differently from what they might expect!
Middle English pronunciation is part of what makes medieval literature an interesting field of study, but it often poses a major challenge to beginners. KnightNoise is a Middle English text to speech generator, designed to help students and others interested in medieval literature gain a better understanding of how Middle English was pronounced.
What it does 🔊
KnightNoise reads in Middle English text from the user, converts the text into phonemes based on Middle English pronunciation rules and then outputs audio corresponding to the appropriate phonemes.
How we built it 💻
KnightNoise is created entirely in Python.
Challenges we ran into 🧱
The audio generation was a particularly difficult part of this project. Modern text to speech systems generally use machine learning, but this would have required both a lot of time and a lot of audio of spoken Middle English, neither of which I had, so I decided to use a much more basic rules-based system (where the audio output is generated based on a strictly defined algorithm rather than the predictions of a machine learning model) to associate phonemes with different combinations of written letters.
I thought that it would be straightforward to find audio files for each Middle English phoneme and stitch them together into words, even if this made the audio output less sophisticated. However, it was very challenging finding appropriate audio files, and even more difficult to edit the audio files in a way that strings of them would sound like words when played together.
Additionally, creating an algorithm to convert written Middle English text to phonemes was challenging. Just like in present day English, in Middle English one written letter (or letter combination) can represent many different possible sounds, depending on the context. The current algorithm is oversimplified and does not account for all elements impacting Middle English pronunciation, particularly vowel length and syllable stress.
Accomplishments that we're proud of 🏆
- Working with audio in Python for the first time
- Creating an algorithm to convert Middle English text into phonemes
What we learned 🎓
Almost all of the elements of this project were new to me: in particular, this was my first time working on a project involving speech generation, as well as my first time working with audio in Python more generally. I enjoyed learning about how text to speech generation technology has evolved over time and creating a rules-based text to speech algorithm.
What's next for KnightNoise 💭
- Allow users to upload files containing Middle English text to be converted to audio
- Create a web app for easier accessibility
- Adjust words-to-phonemes algorithm to account for other factors impacting Middle English pronunciation, such as word stress and vowel length
- Revamp audio generation, possibly moving to a machine learning model
- Include support for additional Middle English dialects
Log in or sign up for Devpost to join the conversation.