TiriBots are: Ongoing project for my thesis performance DeepTiri
My thesis started with this question:
Can technology be trained to deliberately commit mistakes (e.g. text, speech)
to help spark creative improvisation in performers and artists
We try to build machines to look like a human as possible, ones that can learn and be trained just like humans. What is a human? What determines if a being is human? Humans make mistakes, this translates to machines as well. As a user of technology, I have found that machines can glitch and run into errors often. Can these errors be a sign of humanity within machines?
I am a broken English speaker, I found that the way I speak makes everyone (human or/and machine) misunderstand my mind and create other meanings of the conversation. Those things for me are fascinating and can create an art piece.
As a performer, things have gone wrong almost every time I have performed. Does this mean its a “live performance”? Things that you can not feel in the pre-recording process. To solve a problem on stage is a good exercise for performers and artists to practice improvisation
During my performances, my collaborators, my machines, and I often commit mistakes live. This forces a creative impulse that creates unexpected and unique experiences.
This is the reason why I look to create a program that encourages improvisation within performances. My approach is to create a way to misinform and mistrain a program to act in an unpredictable way.
TiriBots,
To created voice interface to talk is a different from typing. Here is some good article talking about voice interface design from Nicole He
“Speaking out loud is an intuitive and expressive way for people to communicate. It’s also more natural and human. When you’re doing a Google search, you’re likely to type something terse and efficient like “best tacos nyc.” But if you were asking a friend, you might say something like “Where do you wanna go for Mexican food tonight?”
Designing a creative interaction based on the way people normally speak out loud is an opportunity to engage with them on a more natural, expressive level. You also don’t have to teach people who aren’t familiar with gadgets and new technology how to use it—they can just talk.”
But Tiri(me) Who speaks the same level of bot or even worst. How can I put my character into the bot and create something weird and fun from it? How can I create a speaking machine to generate mistake as I wanted?
I have been tried a lot of speech to text technologies. The most interesting result is the web speech api because this is the basic speech interface that had been installed in every tools for disability people. I explore more in P5speech because they use the same api but wrap up to make it more easy to use. My most interesting test is playing with the speed rate
From the research, most of the companies have a problem if they don’t know how long people will speak and when they start. So this problem is easy to create an error of voice interface. Mostly they set a programme to reply
“- I’m not sure how to reply to that.
– Try asking your question a different way.
– Let’s talk about something else.”
How about if I replace those sentence to something else!
Instead of reply an error, I used this opportunity to use them as a hotword to make another bot to say something else. I used
Rivescript to generated an easy chat bot.
Random Replies:
Making bot always respond exactly the same way to something the user says will get boring really quickly. For this reason, RiveScript makes it easy to add random responses to a trigger!
Let’s Talk About Weight:
While random responses are certainly useful, there will be times when you would prefer that some replies would be chosen more frequently than others.
You can use the {weight} tag in a reply to override how frequently that reply will be chosen compared to the others. For Tiribots, I wrote a reply like this:
The effect that this has is that “lalalalalalaaalalalalala” will be picked 20 times out of 46, “oh oh oh oh oh oh oh no no no” will be picked 25 times out of 46
Weight values can’t be zero and they can’t be negative.
You can not use weights inside a {random} tag.
Making Bots talk at a different speed:
P5speech has a built-in function that you can set a random rate. So now, I can’t predict how long the bot will respond.
😈 The error has begun 😈
From this starting point, I created the conversation between bots by using the error of speech recognition. Instead of saying
– I’m not sure how to reply to that.
– Try asking your question a different way.
– Let’s talk about something else.
I created different characters each one. Here are what I got so far,
She will always reply whatever you say the same word.
She won’t speak in actual words. She is a superstar. She only says a thing in melody. She keeps saying either her famous songs or humming. ‘Cause she is beyond – ce
Hip hop Tiri:
Tiri wanna be hip-hop But she is still in grad school.. how to make hip hop Tiri become more academic and polite and pg rate
I used python poetry generator to replace my name instead of Cardi. Tiri and Cardi have the same sound name that’s why I choose her song. I replace all the curse words with super polite words. The result was pretty weird but that’s all I wanted!!
link to my github poetry generator
Testing TiriBots
Make it a more abstract level of conversation:
I used Word2vec ML5 for making it
What is Word2vec
[Wiki] Word2vec is a group of related models that are used to produce word embeddings. These models are shallow, two-layer neural networks that are trained to reconstruct linguistic contexts of words. Word2vec takes as its input a large corpus of text and produces a vector space, typically of several hundred dimensions, with each unique word in the corpus being assigned a corresponding vector in the space. Word vectors are positioned in the vector space such that words that share common contexts in the corpus are located in close proximity to one another in the space.
Why do I need this:
To create bot that speaks unpredictable even I’m the person who codes it. I need an algorithm that generates my bot to be able to predict the nest word by itself. I made the bot select 1 out of 10 nearest words. It’s interesting to see what word machine pick up. It still has its own similar meaning. Like synonym but it is something that you can train it. Train the relationship between the words. Then create the forever abstract conversation from the machine.
Next Step:
I wanted to add more character of bots by training the text with a different text source. for example, I use text source from Wikipedia. The next predict words will be different from using text source from Twitter. I wanted to create more dynamic of the narrative of my bots
Summary
Part of its pleasure comes from the imperfection of their imitation. TiriBots dwell happily in the uncanny valley, where I can tell she is a bot, even though she is sometimes indistinguishable from a human, and I enjoy the fact that she is a bot along with the broken virtuosity of her impersonation.
I am looking for exploring and develop my bots. My final goal is I am going to perform with them by saying all the command I created and the command that I don’t know. My plan is to use API data to generate the more abstract level of conversation. From that, I can create the new narrative of the way to perform by improvising on top of an unpredictable program.