One way to generate passwords that “sound like” is to use a chain of stamps. The n-degree mark chain is basically a large set of n-tuples that appear in your input enclosure, as well as their frequency. For example, an “aardwark” with a chain of marks of the 2nd degree will generate tuples (a, a, 1), (a, r, 2), (r, d, 1), (d, v, 1), (v, a, 1), (r, k, 1). If you wish, you can also include "virtual" tokens of the start word and end word.
To create a useful chain of stamps for your purposes, you will feed a lot of data in English - there are many available, including, for example, Project Gutenburg - to create a set of records, as described above. For the generation of words or sentences of a natural language, which, at least, mainly follow the rules of grammar or composition, a chain of marks of the third degree is usually sufficient.
Then, to generate a password, you select a random "source" tuple from the set, weighted by its frequency, and output the first letter. Then repeatedly select at random (again weighted by frequency) the "next" tuple, that is, one that starts with the same letters as your current one and has only one letter. Using the above example, suppose I start with (a, a, 1) and print 'a'. My only next choice is (a, r, 2), so I output another "a". Now I can choose either (r, d, 1) or (r, k, 1), so I choose one randomly depending on their frequency of occurrence. Suppose I select (r, k, 1) - I output 'r'. This process continues until you reach the end-of-word marker or decide to stop independently (since most chain strings form a cyclic graph, you cannot stop generating unless you apply a constraint on the artificial length).
At the level of words (for example, each element of a tuple is a word), this method is used by some “conversation bots” to create reasonably seemingly meaningless sentences. It is also used by spammers to try to evade spam filters. At the letter level, as described above, it can be used to generate meaningless words, in this case for passwords.
One drawback: if your input enclosure contains nothing but letters, and your output phrases, so they won’t convey most of the “secure” password requirements. You might want to apply some post-processing to substitute some characters for numbers or characters.