## 4 Implementation and Evaluation of the Mobile Social Music Karaoke System  
### Implementation  
The proposed mobile social karaoke system was implemented based on Android smartphones and Apache web servers. We implemented the client app with Android smartphones powered by TTS, speech recognition, and intuitive interactions utilizing an API. In addition, music search and playback functions were added using a YouTube API to secure sound sources for karaoke. In addition, a ChatHead, which is an Android library that allows an app to be ready all the time, was configured to enable service through voice commands at any time so that providing full-time services could be possible in mobile situations. As for the web server, Apache and PHP were installed for web services such as login in the i9900K CPU and 32G RAM environment, and MariaDB was installed for data management. In addition, the server also supported real-time data exchange among smartphones by offering a UDP demon service. In addition, a 5G Wi-Fi network device was included to support the wireless network of the smartphones. User and group tables were configured so that user profiles and group profiles would be managed through MariaDB. In this environment, users' smartphones exchange information about the group through port 7000 of the server. The server would place port 50003 into standby mode for UDP data streaming when the group's voice sharing has started, and user devices would place port 50030 into standby mode in order to make it possible for audio streaming between users.  
Figure 6: Process of group information sharing and music streaming by the server and devices.  
As shown in Figure 7, the proposed system works in two steps: starting the app and selecting singing mode. In the first step, a user can start the karaoke system by logging into the smartphone's karaoke app or clicking the chat head with a yellow icon overlaid on the screen. In the second step, each user needs to select a signing mode via touch or voice interface. Then, the user starts the karaoke system, the karaoke app requests voice to select the 'Sing Alone' or 'Sing Together' mode through the TTS function. When the user gives a voice command for 'Sing Alone', the personal mode runs. The karaoke app notifies that the 'Sing Alone' mode is running and notifies a request to 'tell the names of the song and singer'. Thereafter, when the names of the song and singer selected by the user have been supplied, the karaoke app retrieves the sound source through YouTube searches and executes it immediately. The user can sing along and save his/her song on his/her smartphone. In addition, the user is allowed to see his/her location to find other instant neighborhoods nearby. This function aims at knowing each other based on location, however, location sharing has not been implemented yet.  
On the other hand, if the 'Sing Together' mode is selected in the first stage to select a mode after starting the karaoke app, the social mode in which singing in turns/control is possible will also be started. In this social mode, after first fixing the names of a song and the singer as in the 'Sing Alone' mode, the user waits until enough group participants are gathered. As shown in Figure 8, there were four smartphones that had joined the 'Sing Together' mode. When the number of participants reaches at least 3, if one of the users notifies the start or clicks start, the singing and listening will start. The remaining members who are not singing listen to the song and score the song, and notify the scores when the singing ends. The next person sings, and the karaoke service continues as such. In Figure 8, one person on the right is singing and three devices on the left are listening in a group of 4 people.  
Figure 8: A group of 4 users in ‘Sing Together’ mode.  
Figure 7: Social Karaoke Service UI.