规律宫缩是什么感觉| 孕妇吃海参对胎儿有什么好处| 淋球菌阳性是什么意思| 梦见过河是什么意思| 人为什么会死亡| 酸笋炒什么好吃| 血亏什么意思| 手术后吃什么补品好| 一直干呕是什么原因| 人体最大的排毒器官是什么| 1939年中国发生了什么| 维酶素片搭配什么药治萎缩性胃炎| 请示是什么意思| 内火重吃什么药见效快| 热毒是什么| 赵丽颖原名叫什么| 甜瓜什么时候成熟| 味精和鸡精有什么区别| 梦见妖魔鬼怪是什么意思| 静息心率是什么意思| 生长发育科检查些什么| 什么叫cd| studio什么牌子| 残局是什么意思| 汗疱疹用什么药| 月经期间可以喝什么汤比较好| 上网是什么意思| 肺结核是什么| 华语是什么语言| 乏力没精神容易疲劳是什么原因| 超敏c反应蛋白正常说明什么| 口腔溃疡补充什么维生素| 阑尾炎什么症状表现| siri什么意思| 脑萎缩有什么症状| 木可以加什么偏旁| 1985属什么| 胆红素三个指标都高是什么原因| 孕妇吃什么钙片| 末次月经是什么意思| 什么叫血压| 生不如死什么意思| 扒灰什么意思| 牙齿痛吃什么药| 臻字五行属什么| 无限未来为什么不写了| 为什么剪指甲不会疼| 记录是什么意思| edifier是什么牌子| 为什么说金克木生财| 勤去掉力念什么| 7月6号什么星座| 手掌发紫是什么原因| cpm是什么意思| 隐翅虫擦什么药膏| 六月六日是什么节日| 古怪是什么意思| 金银花有什么作用| 氨水是什么| 反应是什么意思| 农历十月份是什么星座| 明天属什么生肖| 咬指甲是什么心理疾病| 粘纤是什么面料| 频繁打喷嚏是什么原因| 黄体功能不全是什么意思| eb是什么意思| 羊肉不能和什么水果一起吃| 外阴白斑瘙痒抹什么药| 十万为什么| 德巴金是什么药| 全身骨显像是查什么的| 面膜含什么成分不能买| 寒衣节是什么意思| 五什么六什么的成语| 拔气罐有什么好处| 肌肉萎缩是什么症状| 虫草花是什么| 排卵期出血是什么原因| 女生什么时候最容易怀孕| 被臭虫咬了擦什么药| 大表哥是什么游戏| 口蘑是什么| 小叶增生是什么原因导致的| 屎壳郎的学名叫什么| 老放臭屁是什么原因| 姜枣茶什么时间喝最好| 足齐念什么| 洋葱对肝脏有什么好处| 参乌健脑胶囊适合什么人吃| 特殊是什么意思| 退而求其次是什么意思| 胰腺ca是什么意思| 亡羊补牢的寓意是什么| 疤痕子宫什么意思| 5点到7点是什么时辰| 女为什么字| 什么的问题| 黄芪什么季节喝最好| 斑斓什么意思| 肺门不大是什么意思| 产后第一次来月经是什么颜色| 什么的曲线| 左氧氟沙星的功效是什么| 冰粉是用什么做的| 卫字五行属什么| 四六级要带什么| 犄角旮旯是什么意思| 透析病人磷高了吃什么降磷| 拼音的音序是什么| gln是什么氨基酸| 三八是什么意思| 渐入佳境什么意思| 男人精液少是什么原因| 天然是什么意思| 湿气重是什么意思| 什么样的女人最吸引男人| 黄钻有什么用| 小孩白头发是什么原因引起的| 爱吐口水是什么原因| 有黄痰是什么原因| 做飞机需要注意什么| 左氧氟沙星氯化钠注射作用是什么| 脱节是什么意思| 牙齿为什么会痛| 考研都考什么| 疑神疑鬼是什么意思| 十三幺是什么意思| 祖籍是什么意思| 子宫内膜薄有什么危害| 猫咪吐黄水有泡沫没有精神吃什么药| 七月六号是什么日子| 熬夜是什么意思| 睡觉总是做梦是什么原因| 化疗前要做什么检查| 什么中药补气血效果最好| 好运连连是什么意思| 越睡越困是什么原因| 欠佳是什么意思| 法国货币叫什么| dw什么意思| 白兰地是什么酒| 医保断了一个月有什么影响| 经典什么意思| 焦虑症吃什么好| 印度是什么制度的国家| 骨骼惊奇什么意思| 中性粒细胞偏低是什么原因| 孕妇羊水多是什么原因造成的| 膀胱壁增厚毛糙是什么意思| dd是什么意思| 粗钢是什么| 口臭吃什么药| 感冒吃什么消炎药| 为什么会突然打嗝| 长焦镜头是什么意思| 手机暂停服务是什么意思| 水瓶座与什么星座最配| 翡翠五行属什么| 什么是恒牙| 益母草煮鸡蛋有什么功效| 什么是吸附性义齿| bmi是什么意思啊| 女性潮红是什么意思| 绿茶女是什么意思| 嘴角有痣代表什么| 眼睛痒是什么原因| 异性朋友是什么意思| 外阴长水泡是什么原因| 脂溢性脱发用什么洗发水好| 放疗起什么作用| 受凉胃疼吃什么药| 吃什么提高免疫力| 为什么拉尿会刺痛| 点痣用什么方法最好| 梦见打老鼠是什么征兆| 螃蟹跟什么不能一起吃| 身体动不动就出汗是什么原因| 每天吃鸡蛋有什么好处和坏处| 三月八号什么星座| 什么情况下怀疑白血病| 婴儿吃手是什么原因| 心意已决是什么意思| 豆汁是什么| 裸睡有什么好处| 鼹鼠是什么动物| 条子是什么意思| 苦夏什么意思| 蛰居是什么意思| 婷婷玉立什么意思| 眼科属于什么科| 微喇裤配什么鞋子好看| 知了为什么一直叫| 眼底出血用什么眼药水最好| 水瓶座的幸运色是什么颜色| 咳嗽有痰挂什么科| 上火喝什么茶效果最好| 齐人之福什么意思| 铁树开花什么意思| 坦诚相待下一句是什么| 后背疼痛是什么原因| 什么星座黑化最吓人| naprogesic是什么药| 盐和小苏打一起有什么作用| logo中文是什么意思| 洗白是什么意思| 江西有什么景点| 舌头两边锯齿状是什么原因| 磨玻璃影是什么意思| 无精是什么原因造成的| 摩羯座什么时候| 乜是什么意思| 前额头疼是什么原因引起的| 手机充电口叫什么| 贫嘴是什么意思| 什么是牙周炎| 孙悟空是个什么样的人| 甲状腺五类是什么意思| 分娩是什么意思| 耳朵发炎用什么药| 吃什么可以提高免疫力和抵抗力| 打酱油是什么意思| 吃叶酸有什么副作用| 什么叫肛裂| rm是什么位置| 八拜之交是什么生肖| 李小龙属什么生肖| 灰什么丧什么| 双喜临门指什么生肖| 缺氧是什么症状| 康复治疗学主要学什么| 肝属什么| EXP什么意思| 蚊子喜欢什么血型的人| m蛋白是什么| 规培证什么时候发| 磁共振是检查什么| 孕妇吃什么胎儿智商高| 嘴子是什么意思| 农历10月24日是什么星座| 庚日是什么意思| sey什么意思| 常吃猪油有什么好处和坏处| 牙周炎吃什么药| 节制是什么意思| hc是胎儿的什么意思| 萩是什么意思| 空调健康模式是什么意思| 道是什么| 下午17点是什么时辰| 清谷天指的是什么| 医者仁心什么意思| 三叉神经痛挂什么科就诊| ev病毒是什么| 一九六七年属什么生肖| 轴向是什么意思| 尿肌酐是什么意思| 部堂大人是什么职位| 血管瘤是什么意思| 保妇康栓治疗什么妇科病| 9.1什么星座| 岁次什么意思| 白蛋白偏高是什么原因| 抗着丝点抗体阳性是什么| 百度
Skip to content

pncnmnp/phoenix10.1

Repository files navigation

Phoenix10.1

Coverage Status

Logo of Phoenix10.1 - it is a Phoenix in the sky, disney style

Phoenix10.1 is a software to generate personalized pre-recorded internet radios that has a text-to-speech based radio jockey.

Here's a demo to understand what it sounds like!

Screen Shot 2025-08-06 at 7 14 56 PM

What can it do?

This radio jockey is capable of playing your favorite songs, including tracks from your preferred artist, genre, or Billboard chart. It can automatically discover and play fascinating clips from your preferred podcasts, provide weather updates, and deliver daily news.

For a more authentic radio experience, it brightens up your day with fictional company ads, conducts daily QnA with the audience, and shares interesting "On this day..." facts.

Installation

It is recommended to use Python 3.10 or newer to run the code.

Quick Start

If you're using a Debian-based distribution, you can install all dependencies using install.sh:

sh install.sh

Manual

This software requires ffmpeg and espeak. To install them on MacOS:

brew install ffmpeg espeak

To install them on Linux (Debain-based):

sudo apt-get install ffmpeg espeak

For Windows users, to setup and use ffmpeg, follow this guide from Stack Exchange. Moreover, to setup espeak, use this tutorial from Stack Overflow.

To install the Python dependencies, use:

pip3 install -r ./requirements.txt

The software also requires installing punkt from nltk. In a Python shell, use the following code to install punkt:

import nltk
nltk.download("punkt")

To generate TTS (text-to-speech), Coqui-ai's vits model is used. We recommend running a generic TTS command on your shell as this will prompt TTS to automatically install the vits model.

tts --text "I am excited to demo Phoenix ten point one" --model_name tts_models/en/vctk/vits --speaker_idx p267 --out_path temp.wav

The vits model requires around 150 MB of storage.

Creating your radio broadcast

To create your own radio, start by updating the default schema in ./data/schema.json.

Each action in schema.json is a list with two indices, one mentions the action and another mentions the characteristic of that action. Actions available are:

  • up
    • routine to start the radio broadcast
    • characteristic value is ignored
  • music
    • fetches and streams music
    • characteristic should contain list of song names
  • local-music
    • streams music using locally stored songs
    • characteristic should contain either:
      • list of paths to the audio files
      • list of lists of the format [album_path, num_of_songs]
  • music-artist
    • fetches and streams music (based on the artist names)
    • characteristic should contain list of lists of the format [artist_name, num_of_songs]
  • music-genre
  • music-billboard
    • fetches and streams music from Billboard charts
    • characteristic should contain list of lists of the format [chart_name, num_of_songs]
  • podcast
    • fetches an interesting clip from a podcast
    • characteristic should be a list of the format [podcast_rss_link, max_clip_duration_in_mins]
  • weather
    • broadcasts the weather
    • characteristic should contain city name. Use null to fetch weather using your IP address.
  • news
    • broadcasts the news using rss feeds. The rss feeds can be updated in ./data/rss.json.
    • characteristic should be a list of the format [category, num_of_news_items]
  • fun
    • broadcasts a On this day... fact
    • characteristic is ignored
  • end
    • routine to end the broadcast
    • characteristic is ignored
  • no-ads
    • removes fictional advertisements from the broadcast. This action should come before up
    • characteristic value is ignored
  • no-qna
    • removes the daily QnA from the broadcast. This action should come before up
    • characteristic value is ignored

Run

Once schema.json is configured, run the software using:

python3 radio.py

Your entire broadcast would be stored in a radio.mp3 file.

TTS configuration

You can modify the voice of the radio jockey, the name of your radio station/host, and the volume of the background music by editing the ./config.json file. To experiment with different voices, you can use Coqui-ai's vits model with the following command:

tts-server --model_name tts_models/en/vctk/vits

For advice on selecting the best voices, check out this discussion.

The volume of the background music can be adjusted between 0.1 and 2. A value of 0.1 will turn off the background music, while a value of 2 doubles its volume.

Contributing

We always welcome and greatly appreciate contributions! You can contribute in various ways, like by reporting and fixing bugs or suggesting and implementing new features. To start contributing, you can either submit a pull request or open an issue.

If you're submitting a pull request, please make sure to run pylint before submitting. Although it's not mandatory, performing unit tests on your code is highly encouraged.

To run the unit tests, use this command (from the root directory):

python3 -m coverage run --omit */site-packages/* -m unittest

We also recommend using mutation testing with mutmut. To execute mutmut, run this command (once again from the root directory):

mutmut run --paths-to-mutate ./radio.py --tests-dir ./tests/ --runner 'python3 -m unittest'

Bear in mind that mutation testing is a costly means of evaluating your test suite and can take several hours. So, only use this while suggesting a major change.

License

The code is open-sourced under the MIT License.

Acknowledgements

Every software stands on the shoulders of giants, and this is no different!

  • The authors would like to thank Coqui-ai and their work on TTS (licensed under Mozilla Public License 2.0).
  • The logic to generate random identities is from rig and the names database (fnames.txt, lnames.txt, locdata.txt) is from the US Census database.
  • The dataset in ./data/genres.csv is curated from the The Million Song Dataset.
    • The Million Song Dataset was created under a grant from the National Science Foundation, project IIS-0713334. The original data was contributed by The Echo Nest, as part of an NSF-sponsored GOALI collaboration. Subsequent donations from SecondHandSongs.com, musiXmatch.com, and last.fm, as well as further donations from The Echo Nest, are gratefully acknowledged.
  • The background music is Woke up this Morning Theme by Lobo Loco and is licensed under a Attribution-ShareAlike 4.0 International License.
  • The questions are from icebreakers which is licensed under MIT License. Some of the responses were manually curated from character.ai. From their TOS:
    • As to a user interacting with a Character created by another user or by Character AI, the user who elicits the Generations from a Character owns all rights in those Generations and grants to Character AI a nonexclusive, worldwide, royalty-free, fully paid up, transferable, sublicensable, perpetual, irrevocable license to copy, display, upload, perform, distribute, store, modify and otherwise use any Generations.
  • The fictional advertisement and intros/outros were curated using the gpt-3.5-turbo model. We followed the Sharing & Publication Policy of OpenAI and acknowledge that we have reviewed, edited, and revised the language of the content to our preference. We take ultimate responsibility for the content generated.
  • The Logo was generated using Open AI's Dall-E 2.

About

Creates personalized radio stations with your own radio jockey!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  
解表是什么意思 痔疮有什么特效药 拉肚子吃什么水果好 脑梗长期吃什么药好 奇美拉是什么
小猫发烧有什么症状 放化疗后吃什么恢复快 右侧胸口疼是什么原因 女人耳垂大厚代表什么 0是偶数吗为什么
尿常规白细胞偏高是什么原因 全身酸痛失眠什么原因 七月九号是什么日子 化学阉割什么意思 qd医学上是什么意思
五常大米是什么意思 元宵节的习俗是什么 四叶草的寓意是什么 脑残是什么意思 d g是什么牌子
紫得什么hcv8jop0ns7r.cn 八0年属什么生肖zhongyiyatai.com 下身瘙痒什么原因hcv9jop3ns3r.cn 总蛋白低是什么意思hcv7jop6ns6r.cn 怕热出汗多是什么原因hcv8jop5ns0r.cn
眼压低是什么原因ff14chat.com 鱼头炖什么好吃hcv8jop2ns0r.cn 不悔梦归处只恨太匆匆是什么意思hcv7jop9ns7r.cn 多吃醋有什么好处和坏处hcv8jop0ns7r.cn 喜上眉梢是什么意思xinjiangjialails.com
宝宝消化不好吃什么调理hcv8jop1ns5r.cn 舌尖溃疡是什么原因hcv9jop4ns9r.cn 前列腺增生有什么危害cj623037.com 公开遴选公务员是什么意思hcv8jop8ns3r.cn 尿路感染是什么症状hcv8jop0ns5r.cn
hpv有什么症状hcv8jop7ns0r.cn 阑尾炎可以吃什么hcv8jop0ns0r.cn 反应蛋白高是什么意思hcv8jop3ns8r.cn 什么情况下做喉镜hcv8jop8ns7r.cn 化疗病人吃什么好hcv7jop5ns5r.cn
百度