Spaces:
Sleeping
Sleeping
Initial commit
Browse files- .gitattributes +2 -0
- .gitignore +212 -0
- LICENSE +21 -0
- README.md +128 -11
- assets/icon-192x192.png +0 -0
- assets/icon-512x512.png +0 -0
- data/english/hymns.json +0 -0
- data/yoruba/hymns.json +627 -0
- docs/English/Gospel_Hymnbook_UK_hymn1.pdf +3 -0
- docs/English/hymn2.pdf +3 -0
- docs/Yoruba/yoruba_hymns.pdf +3 -0
- embeddings/english_index.faiss/index.faiss +3 -0
- embeddings/english_index.faiss/index.pkl +3 -0
- embeddings/generate_english_embeddings.py +115 -0
- embeddings/generate_yoruba_embeddings.py +88 -0
- embeddings/yoruba_index.faiss/index.faiss +3 -0
- embeddings/yoruba_index.faiss/index.pkl +3 -0
- gradio_app.py +107 -0
- llm/generate_response.py +51 -0
- main.py +17 -0
- requirements.txt +11 -0
- retriever/retriever.py +51 -0
- telegram_bot/bot.py +126 -0
- template.py +37 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.pdf filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.faiss filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Byte-compiled / optimized / DLL files
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[codz]
|
| 4 |
+
*$py.class
|
| 5 |
+
|
| 6 |
+
# C extensions
|
| 7 |
+
*.so
|
| 8 |
+
|
| 9 |
+
# Distribution / packaging
|
| 10 |
+
.Python
|
| 11 |
+
build/
|
| 12 |
+
develop-eggs/
|
| 13 |
+
dist/
|
| 14 |
+
downloads/
|
| 15 |
+
eggs/
|
| 16 |
+
.eggs/
|
| 17 |
+
lib/
|
| 18 |
+
lib64/
|
| 19 |
+
parts/
|
| 20 |
+
sdist/
|
| 21 |
+
var/
|
| 22 |
+
wheels/
|
| 23 |
+
share/python-wheels/
|
| 24 |
+
*.egg-info/
|
| 25 |
+
.installed.cfg
|
| 26 |
+
*.egg
|
| 27 |
+
MANIFEST
|
| 28 |
+
.env
|
| 29 |
+
choral_mind.log
|
| 30 |
+
hym/
|
| 31 |
+
ms/
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# PyInstaller
|
| 35 |
+
# Usually these files are written by a python script from a template
|
| 36 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 37 |
+
*.manifest
|
| 38 |
+
*.spec
|
| 39 |
+
|
| 40 |
+
# Installer logs
|
| 41 |
+
pip-log.txt
|
| 42 |
+
pip-delete-this-directory.txt
|
| 43 |
+
|
| 44 |
+
# Unit test / coverage reports
|
| 45 |
+
htmlcov/
|
| 46 |
+
.tox/
|
| 47 |
+
.nox/
|
| 48 |
+
.coverage
|
| 49 |
+
.coverage.*
|
| 50 |
+
.cache
|
| 51 |
+
nosetests.xml
|
| 52 |
+
coverage.xml
|
| 53 |
+
*.cover
|
| 54 |
+
*.py.cover
|
| 55 |
+
.hypothesis/
|
| 56 |
+
.pytest_cache/
|
| 57 |
+
cover/
|
| 58 |
+
|
| 59 |
+
# Translations
|
| 60 |
+
*.mo
|
| 61 |
+
*.pot
|
| 62 |
+
|
| 63 |
+
# Django stuff:
|
| 64 |
+
*.log
|
| 65 |
+
local_settings.py
|
| 66 |
+
db.sqlite3
|
| 67 |
+
db.sqlite3-journal
|
| 68 |
+
|
| 69 |
+
# Flask stuff:
|
| 70 |
+
instance/
|
| 71 |
+
.webassets-cache
|
| 72 |
+
|
| 73 |
+
# Scrapy stuff:
|
| 74 |
+
.scrapy
|
| 75 |
+
|
| 76 |
+
# Sphinx documentation
|
| 77 |
+
docs/_build/
|
| 78 |
+
|
| 79 |
+
# PyBuilder
|
| 80 |
+
.pybuilder/
|
| 81 |
+
target/
|
| 82 |
+
|
| 83 |
+
# Jupyter Notebook
|
| 84 |
+
.ipynb_checkpoints
|
| 85 |
+
|
| 86 |
+
# IPython
|
| 87 |
+
profile_default/
|
| 88 |
+
ipython_config.py
|
| 89 |
+
|
| 90 |
+
# pyenv
|
| 91 |
+
# For a library or package, you might want to ignore these files since the code is
|
| 92 |
+
# intended to run in multiple environments; otherwise, check them in:
|
| 93 |
+
# .python-version
|
| 94 |
+
|
| 95 |
+
# pipenv
|
| 96 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 97 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 98 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 99 |
+
# install all needed dependencies.
|
| 100 |
+
#Pipfile.lock
|
| 101 |
+
|
| 102 |
+
# UV
|
| 103 |
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
| 104 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
| 105 |
+
# commonly ignored for libraries.
|
| 106 |
+
#uv.lock
|
| 107 |
+
|
| 108 |
+
# poetry
|
| 109 |
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
| 110 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
| 111 |
+
# commonly ignored for libraries.
|
| 112 |
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
| 113 |
+
#poetry.lock
|
| 114 |
+
#poetry.toml
|
| 115 |
+
|
| 116 |
+
# pdm
|
| 117 |
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
| 118 |
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
| 119 |
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
| 120 |
+
#pdm.lock
|
| 121 |
+
#pdm.toml
|
| 122 |
+
.pdm-python
|
| 123 |
+
.pdm-build/
|
| 124 |
+
|
| 125 |
+
# pixi
|
| 126 |
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
| 127 |
+
#pixi.lock
|
| 128 |
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
| 129 |
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
| 130 |
+
.pixi
|
| 131 |
+
|
| 132 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
| 133 |
+
__pypackages__/
|
| 134 |
+
|
| 135 |
+
# Celery stuff
|
| 136 |
+
celerybeat-schedule
|
| 137 |
+
celerybeat.pid
|
| 138 |
+
|
| 139 |
+
# SageMath parsed files
|
| 140 |
+
*.sage.py
|
| 141 |
+
|
| 142 |
+
# Environments
|
| 143 |
+
.env
|
| 144 |
+
.envrc
|
| 145 |
+
.venv
|
| 146 |
+
env/
|
| 147 |
+
venv/
|
| 148 |
+
ENV/
|
| 149 |
+
env.bak/
|
| 150 |
+
venv.bak/
|
| 151 |
+
|
| 152 |
+
# Spyder project settings
|
| 153 |
+
.spyderproject
|
| 154 |
+
.spyproject
|
| 155 |
+
|
| 156 |
+
# Rope project settings
|
| 157 |
+
.ropeproject
|
| 158 |
+
|
| 159 |
+
# mkdocs documentation
|
| 160 |
+
/site
|
| 161 |
+
|
| 162 |
+
# mypy
|
| 163 |
+
.mypy_cache/
|
| 164 |
+
.dmypy.json
|
| 165 |
+
dmypy.json
|
| 166 |
+
|
| 167 |
+
# Pyre type checker
|
| 168 |
+
.pyre/
|
| 169 |
+
|
| 170 |
+
# pytype static type analyzer
|
| 171 |
+
.pytype/
|
| 172 |
+
|
| 173 |
+
# Cython debug symbols
|
| 174 |
+
cython_debug/
|
| 175 |
+
|
| 176 |
+
# PyCharm
|
| 177 |
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
| 178 |
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
| 179 |
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
| 180 |
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
| 181 |
+
#.idea/
|
| 182 |
+
|
| 183 |
+
# Abstra
|
| 184 |
+
# Abstra is an AI-powered process automation framework.
|
| 185 |
+
# Ignore directories containing user credentials, local state, and settings.
|
| 186 |
+
# Learn more at https://abstra.io/docs
|
| 187 |
+
.abstra/
|
| 188 |
+
|
| 189 |
+
# Visual Studio Code
|
| 190 |
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
| 191 |
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
| 192 |
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
| 193 |
+
# you could uncomment the following to ignore the entire vscode folder
|
| 194 |
+
# .vscode/
|
| 195 |
+
|
| 196 |
+
# Ruff stuff:
|
| 197 |
+
.ruff_cache/
|
| 198 |
+
|
| 199 |
+
# PyPI configuration file
|
| 200 |
+
.pypirc
|
| 201 |
+
|
| 202 |
+
# Cursor
|
| 203 |
+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
| 204 |
+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
| 205 |
+
# refer to https://docs.cursor.com/context/ignore-files
|
| 206 |
+
.cursorignore
|
| 207 |
+
.cursorindexingignore
|
| 208 |
+
|
| 209 |
+
# Marimo
|
| 210 |
+
marimo/_static/
|
| 211 |
+
marimo/_lsp/
|
| 212 |
+
__marimo__/
|
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2025 Soyinka Enoch
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
README.md
CHANGED
|
@@ -1,14 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
---
|
| 13 |
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🎶 ChoralMind – Hymn Search Bot
|
| 2 |
+
|
| 3 |
+
ChoralMind is a Telegram bot that helps you search and retrieve **English** and **Yoruba** hymns using semantic search with FAISS embeddings.
|
| 4 |
+
|
| 5 |
+
## 📌 Features
|
| 6 |
+
- Search hymns in **English** and **Yoruba** by typing any line from the hymn.
|
| 7 |
+
- Retrieves relevant hymns using **Google Generative AI embeddings** (`models/text-embedding-004`).
|
| 8 |
+
- Supports multilingual hymn databases with separate FAISS indexes.
|
| 9 |
+
- Interactive **language selection** via Telegram inline buttons.
|
| 10 |
+
- Logs all bot activity for debugging and analytics.
|
| 11 |
+
- Maintains `hymn_id` mapping so results link back to the full hymn text.
|
| 12 |
+
|
| 13 |
+
## 🛠 Tech Stack
|
| 14 |
+
- **Python 3.12**
|
| 15 |
+
- python-telegram-bot
|
| 16 |
+
- LangChain for text chunking and FAISS vector storage
|
| 17 |
+
- Google Generative AI API for embeddings
|
| 18 |
+
- FAISS for similarity search
|
| 19 |
+
- pdfplumber for PDF hymn extraction
|
| 20 |
+
- Gradio for interactive web interface
|
| 21 |
+
|
| 22 |
+
## 📂 Project Structure
|
| 23 |
+
```
|
| 24 |
+
├── docs/ # hymns PDF source
|
| 25 |
+
├── data/ # Extracted hymns in JSON
|
| 26 |
+
├── embeddings/ # embedding scripts and FAISS Index
|
| 27 |
+
├── retriever/
|
| 28 |
+
│ └── retriever.py # HymnRetriever class
|
| 29 |
+
├── llm/
|
| 30 |
+
│ └── generate_response.py # Formats retrieved results into Telegram reply
|
| 31 |
+
├── telegran_bot # Telegram bot entrypoint
|
| 32 |
+
│ └── bot.py
|
| 33 |
+
├── main.py # main program
|
| 34 |
+
├── requirements.txt # Python dependencies
|
| 35 |
+
|── gradio_app.py # interactive web interface
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
## ⚙️ Installation
|
| 41 |
+
**Clone the repository**
|
| 42 |
+
```bash
|
| 43 |
+
git clone https://github.com/yourusername/choralmind.git
|
| 44 |
+
cd ChoralMind
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
## 📦 Create and Activate a Virtual Environment
|
| 48 |
+
```bash
|
| 49 |
+
python -m venv venv
|
| 50 |
+
source venv/bin/activate # Linux/Mac
|
| 51 |
+
venv\Scripts\activate # Windows
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
## 📥 Install Dependencies
|
| 55 |
+
```bash
|
| 56 |
+
pip install -r requirements.txt
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
## ⚙️ Set Up Environment Variables
|
| 60 |
+
Create a `.env` file:
|
| 61 |
+
```ini
|
| 62 |
+
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
|
| 63 |
+
GEMINI_API_KEY=your_google_generative_ai_key
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
---
|
| 67 |
+
|
| 68 |
+
## 📜 Extracting Hymns & Generating Embeddings
|
| 69 |
+
|
| 70 |
+
### Yoruba Hymns
|
| 71 |
+
```bash
|
| 72 |
+
python python embeddings/generate_yoruba_embeddings.py
|
| 73 |
+
```
|
| 74 |
+
- Parses **all PDFs** in `docs/Yoruba/`
|
| 75 |
+
- Uses regex to detect hymn headers based on the hymn book structure
|
| 76 |
+
- Merges all verses for each hymn into one record
|
| 77 |
+
- Splits text into chunks and generates embeddings
|
| 78 |
+
- Saves FAISS index in `embeddings/yoruba_index.faiss`
|
| 79 |
+
|
| 80 |
+
### English Hymns
|
| 81 |
+
```bash
|
| 82 |
+
python python embeddings/generate_english_embeddings.py
|
| 83 |
+
```
|
| 84 |
+
- Reads **all PDFs** in `docs/English/`
|
| 85 |
+
- Extracts text in **two-column format** (left & right) based on the hymn book structure
|
| 86 |
+
- Splits hymns by patterns into chunks and generates embeddings
|
| 87 |
+
- Saves to `data/english/hymns.json`
|
| 88 |
+
- Generates **FAISS embeddings** and saves to `embeddings/english_index.faiss`
|
| 89 |
+
|
| 90 |
+
---
|
| 91 |
+
|
| 92 |
+
## ▶️ Running the Bot
|
| 93 |
+
```bash
|
| 94 |
+
python main.py
|
| 95 |
+
```
|
| 96 |
+
## 🚀 Running the Gradio App
|
| 97 |
+
|
| 98 |
+
This project uses [Gradio](https://gradio.app) to provide an interactive web interface.
|
| 99 |
+
|
| 100 |
+
```bash
|
| 101 |
+
python gradio_app.py
|
| 102 |
+
```
|
| 103 |
+
---
|
| 104 |
+
|
| 105 |
+
---
|
| 106 |
+
|
| 107 |
+
## 💬 Usage Flow
|
| 108 |
+
1. **User starts the bot** → Bot sends greeting:
|
| 109 |
+
```vbnet
|
| 110 |
+
Hello, I'm ChoralMind 🎶
|
| 111 |
+
Click /start to choose your language and search.
|
| 112 |
+
```
|
| 113 |
+
2. **User clicks `/start`** → Bot shows **English / Yoruba** buttons.
|
| 114 |
+
3. **User chooses a language**.
|
| 115 |
+
4. **User sends any line from a hymn**.
|
| 116 |
+
5. **Bot returns top matching hymns with context**.
|
| 117 |
+
|
| 118 |
+
---
|
| 119 |
+
|
| 120 |
+
---
|
| 121 |
+
|
| 122 |
+
## 📜 License
|
| 123 |
+
MIT License – feel free to modify and distribute.
|
| 124 |
+
|
| 125 |
---
|
| 126 |
|
| 127 |
+
## 🙌 Credits
|
| 128 |
+
- Hymn content from [https://books.google.com.ng/books?id=NONpPAAACAAJ&printsec=frontcover&source=gbs_atb#v=onepage&q&f=false]
|
| 129 |
+
[https://gospelriver.com/gospelhymnbookuk/Gospel_Hymnbook_UK.pdf]
|
| 130 |
+
- Powered by **Google Generative AI** & **LangChain**
|
| 131 |
+
- Bot built with **python-telegram-bot**
|
assets/icon-192x192.png
ADDED
|
|
assets/icon-512x512.png
ADDED
|
|
data/english/hymns.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/yoruba/hymns.json
ADDED
|
@@ -0,0 +1,627 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"number": 1,
|
| 4 |
+
"title": "ORIN OWURO. С.М.",
|
| 5 |
+
"text": "1 ORIN OWURO. С.М.\nOluwa la oru yi ja\nIwo ti pawa mọ,\nAsi tun ri imole la,\nFun 'o latun bọwọ.\n2 Pa wa mo la ojo yi ja,\nFapa rẹ tọ wa rẽ,\nAwon, ani awọn na la,\nT' iwo pa mọ n' ire.\n3 Ki gbogbo òro, ona wa\nSo pe, ti re l'awà\nK' imole õto ninu wa\nNiwaju aiye tàn."
|
| 6 |
+
},
|
| 7 |
+
{
|
| 8 |
+
"number": 2,
|
| 9 |
+
"title": "ORIN ALE. 8.7.7.",
|
| 10 |
+
"text": "2 ORIN ALE. 8.7.7.\nLoso yi ifẹ rẹ gba wa,\nLare l'awa lo simi,\nLa oru ja k' iwo gba wa,\nNinu ota da wa si ;\nJesu se oluso wa,\nLe iwo l'agbeke wa.\n1 R\nORIN 3.\n2 Ero at' alejo l'awa\nLaiye larin otãnì,\nPa awa ati t'awa mo,\nLapa re l'awa simi ;\nNigba t'aiye wa opin\nK'aba 'o gbe nikęhin."
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"number": 3,
|
| 14 |
+
"title": "OJO ISIMI. С.м.",
|
| 15 |
+
"text": "3 OJO ISIMI. С.м.\nQsọ yi ni t'Olorun ya\nSọtọ fun isimi,\nJe k'awa yo, k'ateriba\nF' Eleda t'ofun ni.\n2 Jesu ti jinde lojo kan\nBi oni, lati mu\nOdodo w'aiye, lati pa\nEșu t'on t'ese run.\n3 L'ojo oni awọn ti rè\nNpade fun adua,\nNwọn nkorin, nwọn si gbọrọ rè\nLati mọ ona na.\n4 Nwọn ranti isimi ti mbo,\nT'Olorun pese si\nQrun rè, fun onigbagbo,\nTi yio duro șinşin."
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"number": 2,
|
| 19 |
+
"title": "ORIN 4.",
|
| 20 |
+
"text": "2\nORIN 4."
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"number": 4,
|
| 24 |
+
"title": "OJO ISIMI. L.M.",
|
| 25 |
+
"text": "4 OJO ISIMI. L.M.\nOLUWA tojo isimi,\nGbọ ti wa, pẹlu waloni!\nT' awa npade fun adua,\nTangboro na, to fi fun wa.\n2 Isimi laiye l'ororun,\nSugbon isimi t'ohun dùn,\nLãlã okàn wa fe 'jo na,\nT' awa simi laileşẽ 'da.\n3 Laiponju, lailare l'awà,\nNib' isimi, ti ombo wá,\nEse, ibi kĩ debe na,\nKiki alafia l'onsan.\n4 Kos' ija, kosi 'dagiri,\nKos' aniyan bi taiyeyi,\nTodapọ mọ ikorinwa,\nT'ont' ete aikujade wá.\n5 Berẹ ọjọ t'atinreti,\nAfejumọ rẹ l'afë ri,\nOnaburu yi l'afẽ yọ,\nK'asun niku, k'aji layo."
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"number": 3,
|
| 29 |
+
"title": "ORIN 5. 6.",
|
| 30 |
+
"text": "3\nORIN 5. 6."
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"number": 5,
|
| 34 |
+
"title": "AFERI OJO ISIMI.",
|
| 35 |
+
"text": "5 AFERI OJO ISIMI.\nS.M.\nABE aferi 'o\nOjo'simidara:\nGbogbo ose ama wi pe,\nIwo oti pe to !\n2 Okó wabi Kristi\nJinde ninu iku:\nGbogbo ose ama wi pe,\nIwo oti pę to!\n3 'Oso t'ajinde wa\nGegebi ti Jesu:\nGbogbo ose ama wipe,\nIwo oti pę to !\n4 Iwọ sọ t'isimi\nTilu alufia\nT' ibukun enia mimó:\nIwo oti pe to!\nOJO ISIMI.\nС.М.\nNIGBAWO, Olugbala mi,\nNgo ri o ni pipe\nN'ibukun t'ojo isimi\nLaini boju larin."
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"number": 4,
|
| 39 |
+
"title": "ORIN 7.",
|
| 40 |
+
"text": "4\nORIN 7.\n2 Ran mi, gba mi ni 'rinkiri\nLaiye aniyan yi,\nSe ki nf'ife be ebe mi,\nSi gbọ adua mi.\n3 Baba fi Emi re fun mi,\nOluto at'oré,\nT'otan ipami s'ayò, si\nIsimi ailopin."
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"number": 7,
|
| 44 |
+
"title": "OLORUN ELEDA. L.M.",
|
| 45 |
+
"text": "7 OLORUN ELEDA. L.M.\nEJE k'ayin Olorun wa\nEleda gbogbo enia\nAt'eranko, at'eweko,\nAti gbogbo nkan mi gbogbo.\n2 Otete se imolẹ nã,\nK'ole fi iye laiye han,\nOsi te oju orun lọ,\nKamá s'ofurufu nipo.\n3 Enyin teloju, ewa, wo!\nAťoșupa, at' irawo,\nLese ese l'ofi wọn si,\nIye won ni aleka bi?\n5 в2\nORIN 7. 8.\n4 Eje k'awo aiye wa nã,\nEwa re, ti ofi bora,\nOpoju ogo Solomon,\nT'ologoj'awọn Obalọ.\n5 Sugbonju gbogbo rẹ lọ, wo\nEnia l'aworanrè bo:\nEmi tiEmi re ni nwọn,\nOfun wọn n'imò atogbọn.\n6 Eje k'ayin Olorun wa,\nToda wa ni daradara;\nEje ki gbogbo eda yin\nEleda, t'oto fun iyin."
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"number": 8,
|
| 49 |
+
"title": "OLORUN OLUPAMO. C.M.",
|
| 50 |
+
"text": "8 OLORUN OLUPAMO. C.M.\nIwo low' eni t'ire nșan,\nSi o mo gbọkàn mi,\nN'ibanuję mi aťędun\nOluwa ranti mi!\n2 Nigba nkerora okàn mi,\nTeșe mbe laju mi,\nOluwadari mi ji mi\nNi ife ranti mi !"
|
| 51 |
+
},
|
| 52 |
+
{
|
| 53 |
+
"number": 6,
|
| 54 |
+
"title": "ORIN 9.",
|
| 55 |
+
"text": "6\nORIN 9.\n3 Idanwo kikan yi mi ka\nOluwa, nkòlẽ yẹ;\nOluwafun mi lagbara,\nNi rere ranti mi !\n4 Laisan ati ibinu ni\nT'ara atokàn mi,\nFi suru fun mi, toju mi,\nSi gbo! k'oranti mi!\n5 Bi 'tiju ati eganwá\nLoju mi laiye yi,\nEmi odoju ti ęgan,\nB'iwo ba ranti mi.\n6 Akoko iku sumo 'le,\nMo jowo ara mi ;\nOlugbala ni d'emi mi,\nNgoke, k'oranti mi."
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"number": 9,
|
| 59 |
+
"title": "IBI JESU KRISTI. 7s.",
|
| 60 |
+
"text": "9 IBI JESU KRISTI. 7s.\nGво akete orun ndùn,\nOgo ni f'Oba titun,\nAnu,'lafialaiye\nObaorunmbawagbe."
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"number": 7,
|
| 64 |
+
"title": "ORIN 10.",
|
| 65 |
+
"text": "7\nORIN 10.\n2 Gbogbo aiye ji layò,\nPemo orin loke po,\nKí Oba alafia,\nKí örun ododo nã\n3 On fogo rẹ s'apakan,\nAbi(i) k'eniamá kú mọ,\nAbi (i) da elese si,\nAbi (i) k'ale tunwabi.\n4 Wá, Ife araiye, wá!\nWá, gbe inu okàn wa!\nIru obiri niji !\nK'ofo ejo na lori !\n5 Ogo ni f'oba titun,\nK'afi gbogbo orindun,\nAnu 'lafia laiye\nObaorunmbawagbe."
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"number": 10,
|
| 69 |
+
"title": "IBI JESU KRISTI. С.М.",
|
| 70 |
+
"text": "10 IBI JESU KRISTI. С.М.\nJE korin si Olorun wa\nPelu Angeli re,\nAngeli ko mọ ifẹ na,\nTawa gba lọwọ rè."
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"number": 8,
|
| 74 |
+
"title": "ORIN 11.",
|
| 75 |
+
"text": "8\nORIN 11.\n2 Ife'nu rere si awa\nL'Olorun ti fi han,\nAti laiye alafia\nAgbo lat' orun wá.\n3 Ore ofe t'on t'ododo\nLaiye ni nwọn pade,\nNipa Jesu t'owá, tędo\nN'iwa 'relę laiye.\n4 Ogo ni fun Olorun mi,\nTofọmọ rẹ fun wa,\nTobojuwo iru eyi\nElesebi awa.\n5 Laiye je k'afi iyin fun (u)\nNipa iwa rere,\nTiti aofi ogo fun(u)\nLailese l'orun rẽ."
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"number": 11,
|
| 79 |
+
"title": "IBI JESU KRISTI. C.M.",
|
| 80 |
+
"text": "11 IBI JESU KRISTI. C.M.\nK'ayin Oluwat'ologo,\nLoni l'abi (i) saiyé,\nK'ayin (i) nitori ti omu\nOdodo was'aiyé."
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"number": 9,
|
| 84 |
+
"title": "ORIN 12.",
|
| 85 |
+
"text": "9\nORIN 12.\n2 Awọn orile ede ni\nNreti Oluwa nã,\nNwọn fẹ ri ẹni t'awa ri,\nAni Olugbala.\n3 Oba ati woli mimó\nNwọn foju si ọna,\nN'ireti ati igbagbo\nNwọn duro d'Oluwa.\n4 Şugbọn Eni ti nwọn reti,\nAni Olugbala,\nNigba ti wa ni awa ri (i)\nAnrohin (i) y'aiye ka."
|
| 86 |
+
},
|
| 87 |
+
{
|
| 88 |
+
"number": 12,
|
| 89 |
+
"title": "IBI JESU KRISTI. 7s.",
|
| 90 |
+
"text": "12 IBI JESU KRISTI. 7s.\nODE Kristi Olorun\nLat' ibugbe rè rorun,\nLat' ite alafia\nOwá si aginju wa.\n2 Om' alade 'lafia\nOde, ru iponju wa,\nOde, fi imolẹ rè\nPa õkun oru wa ré."
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"number": 10,
|
| 94 |
+
"title": "ORIN 13.",
|
| 95 |
+
"text": "10\nORIN 13.\n3 On Oba l'agbarade,\nSo aiye yi d'ilé rè,\nOde, reru ese wa,\nOn s'Olo'un at'enia.\n4 Ode, ti orukọ rè\nRo t'igbala fun aiyé,\nOf' ibugbe rè ayò\nSilẹ ni ifẹ rè pọ.\n13 IJIYA JESU KRISTI.) L.M.\nNIGBAtimo wo igi ni,\nNibi ti olugbalaku,\nOhun mi emi koka si,\nOgo mi ni mo b'egan lù.\n2 Emi ko gbodo gbękę le,\nBikosę ninu iku rè,\nOhun asan,t'on t'afẹ rè\nMo gan, nitori eję rè.\n3 Wo ! t'ori, t'owo, t'ese rè\nIrora t'on t'ifę rę wá,\nIru ifę rekosi ri,\nT'oteje ara re funwa."
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"number": 11,
|
| 99 |
+
"title": "ORIN, 14.",
|
| 100 |
+
"text": "11\nORIN, 14.\n4 Bigbogbo aiye ni t'emi,\nT'emi bun (u)Jesu,ko tonkan,\nIfe rè t'aika, t'aiso ri,\nGba gbogbo ọkàn lọwọ wa.\n14 IJIYA JESU KRISTI.\n8.7.4.\nOgo, olá ainipekun\nFi fun eni t'oti kú,\nIku rè t'awajigbese\nLori igi t'ifibu;\nRohin iyin,\nRohin iyin,\nEni t'ogbelese la.\n2 Ife Jesu t'akolẽ so,\nAiniyeat'ailopin,\nEnyin enia, ma'soro!\nOpo, akolẽwá ri;\nOgonifun,\nOgoni fun,\nEni t'ogbelese la."
|
| 101 |
+
},
|
| 102 |
+
{
|
| 103 |
+
"number": 12,
|
| 104 |
+
"title": "ORIN 15.",
|
| 105 |
+
"text": "12\nORIN 15.\n3 Nigba t'agbo itan 'yanu\nNiti agbelebu rè,\nAmãkorin si Olorun,\nAti sỌmọ mimó rè ;\nEnimimó,\nEni mimó,\nKorin si oruko rệ.\n15 IJIYA JESU KRISTI. 7.6.D..\nWo ade egan lori\nOlugbalat'aiye,\nAnyin (i) nitori ore,\nTofi han f'araiye;\nEnuyami ni riro\nIjiya Jesumi,\nMo ni iru ife'wo\nBi ifę Jesu mi ?\n2 Oluwa! mo mọ ẹgan\nT' 'oru ni Golgata,\nL'egan, t'Olorun gbesan,\nLara re nipo wa;con\n13\nC\nORIN 16.\nBệ ni adari re ji\nEyi, t'ajigbese,\nKi awa, k'ole mã ri\nIye nipo egbe.\n3 Olugbala ki l'emi\nWi niti ore re?\nGba ebọ 'dupe t'emi\nLòrç, n'iwa rere ;\nTiti emi ofope\nFun 'o ni orun rẹ,\nNigbat'emi--lailese\nYio sin 'o logo rẹ.\n16 AJINDE JESU KRISTI. 78.\nJESU Kristiji loni,\nEnia at'angeli wi,\nGbayo nyin tișegun ga,\nOrun, aiye korin dã'\n2 Isé si idande tan,\nIjaon isegun tan,\nOrunkidokunkun mọ,\nOrun ko wọ l'eję mọ."
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"number": 14,
|
| 109 |
+
"title": "ORIN 17.",
|
| 110 |
+
"text": "14\nORIN 17.\n3 Eso ami n'iboji\nL'asan, nigbati Onji,\n'Lekun isa oku și,\nQlà ona Paradis\n4 Iku, itani re wà?\nIboji 'segun re wà ?\nOba ogo si tunyè,\nIku rè dawa n'ide.\n17 AJINDE JESU KRISTI. 7.6.D.\nOLUWAjinde lõto,\nK'arohin rere nã,\nBi oti jiya lõto,\nTokú niGolgata ;\nSugbon odijo keta\nAwọnApostili\nTi nwọn w'oku Oluwa,\nLaiye ni nwọn gbe ri (i).\n2 Oluwa jinde lõto,\nIselopari tan,\nIku rè mí iku wa\nNipa ajinde nã ;"
|
| 111 |
+
},
|
| 112 |
+
{
|
| 113 |
+
"number": 15,
|
| 114 |
+
"title": "ORIN 18.",
|
| 115 |
+
"text": "15\nORIN 18.\nNje nisisiyi owà\nLaiye, ti ko kú mọ,\nKi, lehin iku ti wa,\nAoniye laikú mọ.\n3 Oluwajinde lõto,\nNje oro iku wa\nL' amu kuro nitõto,\nA tu irora wa\nTobehe, ki iku wa\nDabi ọmọ lękun,\nT'oși'kun orun funwa\nSi iye aikú mọ.\n18 AJINDE JESU KRISTI. C.M.\nMo wi fun olukuluku\nPe, Onji osiyè,\nOsi wà larin wa pelu,\nNipaEmi iyè.\n2 Ewi fun enikeji nyin,\nKi nwọnji pẹlu wa,\nK' imole kowakakiri\nNi gbogbo aiyewa."
|
| 116 |
+
},
|
| 117 |
+
{
|
| 118 |
+
"number": 16,
|
| 119 |
+
"title": "ORIN 19.",
|
| 120 |
+
"text": "16\nORIN 19.\n3 Nisisiyi aiyé yi ri\nBi ile Baba wa,\nIyè titun ti on fun ni,\nOso (o) d'ilé Baba.\n4 Sinu okun ti ojinju\nIberu iku bọ,\nKi gbogbo wa k'ole f'oju\nBankankan ti ombo.\n5 Ona õkun ti On fi rin,\nMu ni lọ si orun,\nEni t'orin bi On ti nrin,\nYio d'odọ rẹ lọrun.\n6 On yè, osi wà pẹlu wa\nNi gbogbo aiyé yi,\nAti nigba t'af'ara wa\nF'erupę n'ireti.\n19 IGOKE JESU KRISTI. 7.8.7.\nA FẸ gbọrọ tọjọ nã,\nNigbati Oluwa goke,\nNigbakan ri oti wà\nN'ise at'iponju laiye,\n17 c2\nORIN 20.\nK'ole jogun orun rè\nFun awa, ni ogo rè.\n2 Biotile lọ s'orun,\nOfẹ awọn t'ofi sehin,\nYiopesesile fun\nAwa, ati gbogbo enyin,\nToti jiya iku fun:\nK'ayin (i) logo, k'abukun.\n3 Nisisiyi ojoko\nLori ite itewogba,\nAti lodo Baba rè\nOsimbębe, k'ale gbawa\nTiti yiopada wá\nLogo 'kẹhin ni olá.\n20 ITUNWA JESU KRISTI. 8.7.4.\nWo oluwa l'awo sanma\nOmbo logo, lolá rè,\nEni t'apa fun elese\nWá, pelu Angeli rè;\nHaleluya,\nHaleluya, Amin."
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"number": 18,
|
| 124 |
+
"title": "ORIN 21.",
|
| 125 |
+
"text": "18\nORIN 21.\n2 Gbogbo edawáwo Jesu,\nAso ogo l'awo fun (u),\nAwọn t'ogan (a) awọn t'apa, (a)\nT'okan (a) mọ agbelebu;\nNwọn osokun,\nBi nwọn ri Oluwawon.\n3 Erekuşu, okun, oke,\nOrun, aiye, afolo,\nAwọn tokọ (0) adawọn ru,\nNigbati nwọn gbohun rè ;\nWás'idajo,\nWá s'idajo, wá, kalo !\n4 Idasile t'atinreti,\nOpo ewa l'afi (i) han,\nAwọn tagan lọdo aiye\nPade rè loke lohun;\nHaleluya,\nOgo Olugbala de.\n21 IDAJO IKEHIN. SM.\nONIDAJO mbo wá\nAwọn oku jinde,\nOkokan kole yo kuro\nNinu riranju rè."
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"number": 19,
|
| 129 |
+
"title": "ORIN 22.",
|
| 130 |
+
"text": "19\nORIN 22.\n2 Enu re ododo\nYioda lębi fun,\nAwon t'oso anu rè nu,\nTi nwon sebuburu.\n3 Yo kuro lodo mi\nS'iná, tiko lopin,\nT'atete pese fun eșu,\nToti nsotę simi.\n4 Iwo ti duro to ?\nOjọ nã ombọ wá,\n100\nAiye atorun si fo lọ\nKuro wiwá rè nã."
|
| 131 |
+
},
|
| 132 |
+
{
|
| 133 |
+
"number": 22,
|
| 134 |
+
"title": "IGBALA NIPA JESU KRISTI. 7.6.",
|
| 135 |
+
"text": "22 IGBALA NIPA JESU KRISTI. 7.6.\nOLORUN fe araiyé,\nOfe to bẹhẹ gẹ,\nToran ọmọ rè wáiye,\nTokú funelese.\n15\n2 Olorun ọmọ tele\nPe, emi ose si\nOfin, ati ifé re;\nIwo ha fẹ mi bi ?"
|
| 136 |
+
},
|
| 137 |
+
{
|
| 138 |
+
"number": 20,
|
| 139 |
+
"title": "ORIN 23.",
|
| 140 |
+
"text": "20\nORIN 23.\n3 Lõto Olorun fe mi,\nAni, ani ko si,\nAwọn t'oyipada si (i),\nIgbala ni nwọn ri.\n4 Wo ! Jesu Kristi jiya,\nIgi l'akan a mọ,\nWo ! eje rè ti osan,\nWo ! ro ! mádese mọ!\n5 Jesu s'agbelebu re\nNgokan ese mi mọ\nLabe agbelebu rẹ\nNgowe ese mi mó.\n6 Nigba t'emi ori 'o *\nNi orun rere re,\nNki yiodękun yin 'o\nLogo at'olá rẹ."
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
"number": 23,
|
| 144 |
+
"title": "IGBALA NIPA JESU KRISTI. C.M.D.",
|
| 145 |
+
"text": "23 IGBALA NIPA JESU KRISTI. C.M.D.\nIGBALA ti Olorum wa,\nAwo elese nfe,\nBi atimo pe, n'ibogi\nMbope a kole la."
|
| 146 |
+
},
|
| 147 |
+
{
|
| 148 |
+
"number": 21,
|
| 149 |
+
"title": "ORIN 23.0",
|
| 150 |
+
"text": "21\nORIN 23.0\nIse owo ti awa nșe,\nOnwi nigbagbo\nPe, igbalakosi nihin,\nA sọ ni d'ahoro.\n2 Awa nșebo, awa nrubo,\nAnkirun an nawo,\nAko ri igbala ninu\nNkan wonyi, t'oșofo.\nNje tani, ti ole gba ni?\nFi han ni, fi han ni.\nKi okànwa komáfati,\nBi t'atijo wa ri.\n3 Jesu ni nșe Olugbala,\nJesu Oluwa wa,\nOf' iku re ra wapada\nNinu ese ti wa ;\nSi odo rè, eje k'áwá,\nK'ajewo ese wa,\nOn pe ni, wi pe : emina\nNi ole gba ni la."
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"number": 22,
|
| 154 |
+
"title": "ORIN 24.",
|
| 155 |
+
"text": "22\nORIN 24."
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"number": 24,
|
| 159 |
+
"title": "IGBALA NIPA JESU KRISTI. 7.6.",
|
| 160 |
+
"text": "24 IGBALA NIPA JESU KRISTI. 7.6.\nJESU t'oti wa loke,\nOw'aiyé latiku,\nIwe re rohin ore,\nToșe f'ero orun.\n2 Owá, on kiri şeun\nFun ẹni tofẹ gba (a),\nEni t'onarun karun,\nOn mu u larada.\n3 Osi kọ wọn ni eyi\nT'owu Olorunwa,\nFun ẹni toto (0) lehin,\nOf' ona rere han.\n4 On ti ko nese kese\nKú bi awọn ole,\nAkan amogi egan, A\nBi eni t'osegbe.\n5 Owo tofi nșe rere\nL'af' iso kan mogi,\nEse, t'ofi nrin şere,\nL'akanmogi nani."
|
| 161 |
+
},
|
| 162 |
+
{
|
| 163 |
+
"number": 23,
|
| 164 |
+
"title": "ORIN 25.",
|
| 165 |
+
"text": "23\nORIN 25.\n6 Bi ęba bi mi lere,\nKi nladi re fun nyin;\nMo wi fun nyin t'obere,\nEyi l'așe fun nyin."
|
| 166 |
+
},
|
| 167 |
+
{
|
| 168 |
+
"number": 25,
|
| 169 |
+
"title": "IGBALA NIPA JESU KRISTI.",
|
| 170 |
+
"text": "25 IGBALA NIPA JESU KRISTI.\nс.м.\nJESU l'Ona nipa rẹ nã,\nLese n'iku ayó,\nAt' eni t'onfe wá Baba,\nKi owá nipa rè.\n2 Jesu l'Õto, òrọ rẹ ni\nNrohin ogbọn ôtọ,\nJesu nã l'ole kó inu,\nOsi wẹ aiya mó.\n3 Jesu n' Iyè, ofo isa\nNsọ ti işęgun rẹ,\nAwọn ti ogbeke wọnle (e)\nIkukejiko kan.\n4 Jesu Ona, Oto, Iye,\nFi ogbọn fun awa!\nNipa re ni, kawá Baba,\nInu re ni kawá (a)."
|
| 171 |
+
},
|
| 172 |
+
{
|
| 173 |
+
"number": 24,
|
| 174 |
+
"title": "ORIN 26.",
|
| 175 |
+
"text": "24\nORIN 26.\n26 JESUL'OLUSOAGUTANRÈ. 8.7.\nPs. xxiii.\nBi mo ba ni Jesu Kristi,\nEmi koșe alaini,\nOluso agutan mi ni,\nEni t'onipin fun ni.\n2 On ni mu mi lo si ona\nOdodo alafia,\nKi mmo joko bi agutan\nLoko tutu t'odara\n3 Bi mo tile nrin lokunkun\nLarin iku at'ibi,\nEmi ki yiole beru,\nBi iwo ba pẹlu mi.\n4 Loju gbogbo awọn ota,\nTi ogbe ara wọn ga,\nIwo nsere funmi lara,\nAti lokàn tiwogba.\n5 Bẹhẹ ni mo ri pe,ire,\nAti anu t'on t'ife,\nYio to mi lẹhin laiye,\nL'orun yio bami gbe.\n25 D\nORIN 27.\n27 WIWÁ SODO JESU. 8.7.\nEMI Olo sodo Jesu,\nEni ti ope mi wá,\nEni t'ose Olugbala\nFunelesebi awa.\n2 Emi olo sodo Jesu,\nIriraat'arankan,\nIka ati işe buru,\nTi ẹni nse, On ko ni.\n3 Emi olọ sodo Jesu,\nOdùn mọ mi ki nșe bẽ,\nTalofe mi bi ti Jesu ?\nIfę rę koniru rè.\n4 Emi olo sodo Jesu,\nJesu t'ose ore wa,\nAnuwàninu rẹ pipo\nFun elese bi awa."
|
| 176 |
+
},
|
| 177 |
+
{
|
| 178 |
+
"number": 26,
|
| 179 |
+
"title": "ORIN 28.",
|
| 180 |
+
"text": "26\nORIN 28.\n28 NITI EMI MIMO. 7.6.D.\nEMI mimósokale,\nFi ohun torun han,\nK'omu imolę w'aiyé\nSi ara enia,\nK'awa t'awà lohunkun,\nKi ole mã riran,\nBi Jesu Kristi ti ku\nFungbogbo enia.\n2 Kofi han pe, elese\nNi emi nșe paра,\nKi emi k'ole gbękę\nMi le Olugbala;\nNigba t'awę mi ninu\nGbogbo ese minu,\nEmi ole fi ogo\nFunEni mimó nã.\n3 K'omu mi se aferi\nLati to Jesu lo,\nK'ojoba lori emi,\nK'oso mi di mimó ;"
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
"number": 27,
|
| 184 |
+
"title": "ORIN 29.",
|
| 185 |
+
"text": "27\nORIN 29.\nKi ara ati okàn,\nK'odapo lati sin\nOlorun Eni mimó,\nMetalokan soso.\n29 NITI EMI MIMO. P.M.\nEMI mimó ni,\nTof' ogbọn fun ni,\nT'of' imole han,\nFi fun ni k'awamò\nOlugbalawa.\n2 Okunkun ti wa,\nOse poju lọ,\nAko m'ona re,\nAbe 'o, amona,\nTo walọnarẹ.\n3 Fi fun ni kagbọ\nT'Olorun, kamò (0),\nK'asi fe (e) pelu ;\nNi gbogbo aiye wa\nK'asin (i) botiwu (u)."
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"number": 28,
|
| 189 |
+
"title": "ORIN 30.",
|
| 190 |
+
"text": "28\nORIN 30.\n30 NITI EMI MIMỘ. S.M.\nEMI Olorun mi\nLojo bawonyiwa,\nBi lojo Pentikosti ni\nSokalę lagbara.\nLọkàn kan l'apade\n2\nNile mimó rẹ yi,\nAduro de ileri re,\nAduro de Emi.\n3 B'iro t'ot'orun wá\nTi kun ilé ti wọn,\nBệ lawa fẹ k' Emi kun wa,\nKoso wad'imò kan.\n4 Fun ewe at' agba\nL'ogbọn lat' oke wá,\nFi ọkàn gbọna fun awa,\nK'ayin,k'agbadua.\n5 Emi imolewá\nLe 'fajurojade,\nSiwaju si k'imole tan,\nSi ojo na, t'ope.\n29 D2\nORIN 31.\n31 IBAPTISMU. C.M.\nJESU iwo l'agbohun si,\nMí Emi mimó rẹ\nSi awọn enia wonyi,\nBaptiswọn s'ikú re.\n2 K'ofi agbara re fun wọn,\nFun wọn lọkàn titun !\nKo 'ruko re si aiya won,\nFi Emi rẹ kun wọn.\n3 Jẹ ki nwọn ja bi ajagun\nLabę opagun rẹ,\nMu wọn fõtito damure,\nKi nwọn nrin lona rẹ.\n4 Oluwa gbin wa sikú re,\nK'ajogun iyè rẹ,\nLaiye k'aru agbelebu,\nK'ani ade l'orun."
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"number": 30,
|
| 194 |
+
"title": "ORIN 32, 33.",
|
| 195 |
+
"text": "30\nORIN 32, 33.\n32 IBAPTISMU OMODE. 7s.\nJESU Baba omode\nAse re ni awanșe,\nAm' ọmọ wa sọdọ rẹ,\nKiwọ sọ wọn di ti rẹ.\n2 Ninu eşe l'abi wọn,\nWe wọn kuro lete wọn,\nEje re l'afi rawon,\nK'opin ębun re fun wọn.\n33 IBAPTISMU. S.M.\nEMI Olorun, wá\nBaptis awọn wonyi,\nMajemu mimó bawọn da,\nWewọnkura lese.\nFọ 'pa èșu tútu\nWẹ wọn ni ejẹ re,\nBaba, Omo, Emi Mimó,\nSọ wọn di ọmọ rẹ."
|
| 196 |
+
},
|
| 197 |
+
{
|
| 198 |
+
"number": 31,
|
| 199 |
+
"title": "ORIN 34.",
|
| 200 |
+
"text": "31\nORIN 34.\n34 ONJE ALE OLUWA.\nL.M.\nQJE lõkun oru na ni,\nT'ipa t'aiye, t'esu dide,\nSomo iyonu Baba ni,\nTioréta funota rè.\n2 K'iran awę na to berè,\nOnm'akara, dupę, obu;\nN'ise re gbogbo wõ (i)fẹ rè,\nWo òrọ rè t'onibukun!\n3 Eyi lara t'abu fese,\nGba,je, eyi lonje iyè :\nMu agoyi, eyi leje\nMajemu mi, timotișe.\n4 Oni: s'eyi d'opin aiyé\nN'iranti ikú oré nyin,\nNi tabili mi kepade,\nRo ife t'emi oré nyin.\n5 Jesu awa nje ase re,\nAf'iku re hanl'orinwa,\nTit' iwo pada, aoję\nOnje ale Oluwa wa."
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"number": 32,
|
| 204 |
+
"title": "ORIN 35.",
|
| 205 |
+
"text": "32\nORIN 35.\n35 ONJE ALE OLUWA. P.M.\nARA wa, Oluwape wa\nSase kan ti ife rè,\nYin ẹni t'ebun rẹ bọ wa\nLonje ni tabili rẹ.\nEnyin, t'af' emi rẹ fun,\nWáje onje ti orun.\n2 K'așaro ẹni t'ora wa,\nAşe t'Olugbala ni,\nNigba t'anù otigbawa,\nOsi fawa lowo rè;\nOnf'iriti funwa, wi\nPe, aoyin (i) lai lopin.\n3 Oti po to, t'ajigbese\nFun ife rè sipa wa,\nK'af'ohun gbogbo, t'ape ni\nT'awa, fun isin re nã;\nFun 'o l'afi ara wa\nBabaatAmona wa."
|
| 206 |
+
},
|
| 207 |
+
{
|
| 208 |
+
"number": 33,
|
| 209 |
+
"title": "ORIN 36.",
|
| 210 |
+
"text": "33\nORIN 36.\n4 K'esolõto titi d'iku,\nMura, si sọ ọkàn nyin.\nTõro lona f'awọn 'yokù\nT'ola, t'oduro şinşin.\nDie l'awọn, t'owo nu\nS'ase iyawo lohun.\nORO OLORN.\n36 C.M.\nOLORUN, aso orọ rẹ\nIrugbin l'or'ile,\nJe k'iri orun se sile,\nK'omu ipa re ka.\n2 K'ota Kristi on enia\nMá ş'irugbin mimó,\nK'ofirin mule lokàn wa,\nK'odagba ni ife.\n3 Máje ki aniyan taiye ;\nBi òrò on ayò,\nTabijijona on iji,\nRun irugbin orun."
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"number": 34,
|
| 214 |
+
"title": "ORIN 37.",
|
| 215 |
+
"text": "34\nORIN 37.\nORO OLORUN. 7s.\n37\nSISE, şişe laiye po,\nOro t'olagbara to,\nSise nibikibi ti\nAri eniat'osì.\n2 Oro Baba t'odaiyé,\nTosi pa (a) mọ lọwọ rè,\nTotinu re fọmọ fun\nAwọn, t'afi ese nu.\n2\n3 Oro Olurapada,\nToru eru ese wa,\nT'of' iku m'ese kuro,\nTi aiye yi bọ sinu.\n4 Oro agbara t'Emi,\nT'of' ona orun fun ni\nT'of' agbara re mimó\nŞişe titi l'awotan.\n5 Oro iye t'on t'ife,\nGbogbo aiye fe ti re,\nŞişe titi okunkun\nAofi imole bo."
|
| 216 |
+
},
|
| 217 |
+
{
|
| 218 |
+
"number": 35,
|
| 219 |
+
"title": "ORIN 38.",
|
| 220 |
+
"text": "35\nORIN 38.\n6 Dide, dide, s'ikore\nNibi gbogbo laiye yi,\nDię ni alagbașe,\nIkore po laiye yi.\n7 Baba ikore, t'opo,\nMu wa șișe, şişe lọ,\nKi gbogbo araiye ri\nIran' mọlẹ, t'ofun ni.\n38 IROHIN RERE LAIYE.\nP.M.\nB'okunkun on jűjū\nGboro agbara re,\nT'osi fo lọ ;\nBẽ k'ihin rere re,\nK'otàn imolẹ rẹ,\nNi gbogbo araiyé\nK'imolę wá.\n2 Iwo tomu' lera\nW'aiyé, ati riran\nLapa re na;\nFi riran f'afoju,"
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"number": 36,
|
| 224 |
+
"title": "ORIN 39.",
|
| 225 |
+
"text": "36\nORIN 39.\nS'awotan won ninu,\nKi gbogbo aiye mò\nPe, 'mole wà.\n3 Emi t'õto, t'ife\nT'ole f'iye fun ni,\nFo kakiri;\nLoj'omi aiye wa\nPelu fitila na\nT'omu (i)bi õkunran,\nKimolę wà.\n4 Metalokansoso\nIpa', ife, ogbọn,\nTi rẹ ni nwọn.\nLaiduro bi işan\nOmi okun, koran\nSib' aiye t'ojina,\nImolęwá.\n39 IFE SI KEFERI ATI ISRAELI. L.M.\nAPA Oluwa dide ji ;\nF'agbara maiyewariri,\nJẹ ki nwọn ri anu re gba,\nIşegun t'oti șefunwa.\n37 E\nORIN 40.\n2 K'owi fun awon Keferi,\nOluwanyin lai emi ni,\nK'orile ede gbogbo wá,\nBi emi wà, nwọnyiòla.\n3 Jẹ kọjọ itewogba wá,\nKi eya Israeli la;\nJe k'oju wakotete mò,\nBi aiye yi tigba 'o to.\n4 Olorun fi ife re han,\nK'orukọ ọmọ rẹ k'ohan,\nKi ota re k'oteriba\nFun iwo oba gbogbowa.\n40 AWON ONIWASU.\nT'OLUWA Jesu Kristi ni\nOran, ti aran wa,\nB'oti șe ti Jesu Kristi,\nAkole so (o) dasan;\nGege bi irugbin ti ku,\nKoto hu soke si eso,"
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"number": 38,
|
| 229 |
+
"title": "ORIN 41.",
|
| 230 |
+
"text": "38\nORIN 41.\nBẽ laotete ku saiyé,\nK'ato ni iye lode rè,\nKu s'arawa,\nS'aiye, si arawa.\n2 Iwo Jesu Olori wa\nLọ nipa iku s'iyè,\nOmu awọn onigbagbo\nLọ s'iyè bẹhẹ gẹ ;\nNje k'omu wa s'alabaje\nIyà, at'ile Oba re ;\nAt'awa ati oran wa\nFa soke siimole na\nSimolẹ nã,\nNiku simolę nã.\n41 AWON AKETE IGBALA.\nS.M.\nESE wọn ti da'to,\nTi nduro ni Sion,\nIhin igbala ni nwọn nro,\nNwọn nfòrọ ayò han."
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"number": 39,
|
| 234 |
+
"title": "ORIN 42.",
|
| 235 |
+
"text": "39\nORIN 42.\nOhun wọn ti dùn to,\n2\nIhin won dara po,\nSion, w'Oluwa Oba wo!\nOn joba titi lọ.\n3 Eti wati yò to,\nTagb'iro ayò ni,\nWoli at' Oba ti nduro\nDe e, nwon wá (a) lai ri.\nOju wa ti yo to,\n4\nT'orina orun nã;\nOba, woli ti nfę ri to !\nNwọn ku lai rina nã.\n42 IPEJO LORUKO JESU. 8.7.\nJESU KRISTI awa bere,\nK'omu ileri re șẹ,\nTofi fun awọn t'opade,\nTi mbębe lorukọ rẹ.\n2 Muwa larin wa elese,\nK'omu ese wa kuro,\nF'ipá re da awa lare,\nTó wa, so wadimimó."
|
| 236 |
+
},
|
| 237 |
+
{
|
| 238 |
+
"number": 40,
|
| 239 |
+
"title": "ORIN 43, 44.",
|
| 240 |
+
"text": "40\nORIN 43, 44.\n3 Gbe inu wapelu emi\nT'onke onikerora,\nK'ari mole, at ifeni,\nAti ayòlọna wa.\n43 LEHIN IGBA IWASU.\nL.M.\nBABA k'obusi òro na,\nT'afore ofe re ti gbọ,\nJe k'eso rere k'omule\nK'ohu soke, k'oseso rè.\n2 Awanyin o f'ore ofe,\nN'ilé re l'awa nwóju re,\nFi fun ni kawon tosin o,\nK'od' orun ni iwese mó.\n44 ONA GBÕRO ATI TÕRO.\nС.М.\nOnakan wà, t'ogbõro ju,\nT'anpe lona ese,\nOn l'asi fi ife wamu,\nEgbegberun lonrin (i).\n41 E2\nORIN 45.\n2 Ona koto dię kan mbe,\nT'ofùn gidigidi ;\nDie l'awon ti iwe wi,\nT'ogboju ona yi.\n3 Eyi lona t'ofa ni lọ\nS'ibi ayò t'orun,\nTi enia Jesu gbe wa,\nTi nwọn si nrin n'ife.\n4 Oluwa mu mi se tanmã,\nKi nto ife yi wo,\nKi nkò ona ese mi na,\nKi nyan t'alafia.\nKIȘE ORIŞA AFI JESU. P.M.\n45\nEGBO, orișa su mi,\nBi ohun ti ko l'agbara,\nMo yan eni fun 'rami,\nT'onifeni t'olagbara,\nToti jiyà t'opari\nIşe t'oti șe fun mi."
|
| 241 |
+
},
|
| 242 |
+
{
|
| 243 |
+
"number": 42,
|
| 244 |
+
"title": "ORIN 45.",
|
| 245 |
+
"text": "42\nORIN 45.\n2 Egbo, orișa su mi,\nNitori ti nwonkolere,\nEnikan mbẹ, ti mo nsin,\nTolagbara, t'osi nșere\nFun awọn onigbagbo,\nTikoso ife renu.\n3 Egbo, orișa su mi,\nNitori nwonmu mi șina,\nIsinwọn mmu mi losi\nIbi, t'awọn eșu gbe wa;\nMáse so ti elomi\nJesu Kristi ni mo wi.\n4 Jesu Kristi t'emi nsin\nL'eni t'oti t'eje sile,\nEni t'oti ku fun mi,\nEni t'omu 'gbagbo gbile,\nLati ba ese mi jà,\nOn ati gba emi la."
|
| 246 |
+
},
|
| 247 |
+
{
|
| 248 |
+
"number": 43,
|
| 249 |
+
"title": "ORIN 46.",
|
| 250 |
+
"text": "43\nORIN 46.\n46 ADUA SI OLORUN METALOKAN.\nSPANISH CHANT.\nBABA mi ti mbę ni\nOgọ rẹ l'orun\nIwọ ko kò ẹni t'eșe wộ lọròn,\nWo mi latorunwa,\nFanu rẹ gba mi la,\nEmi ngbaadua,\nM'eşemi kuro !\n2 Eșẹ ni nwọn bi mi,\nEse l'emi nse,\nKos'ire ninu mi,\nMo kun fun ese;\nMo sokun ese mi,\nJesuAlagbawi,\nKi osipefun mi\nLodo Baba rẹ.\n3 Iwo Emi mimó\nEmi ti emi,\nK'oso mi di mimó,\nFun mi n'imole,"
|
| 251 |
+
},
|
| 252 |
+
{
|
| 253 |
+
"number": 44,
|
| 254 |
+
"title": "ORIN 47.",
|
| 255 |
+
"text": "44\nORIN 47.\nAti agbara re,\nK'emi t'eșu mole,\nTon t'ogbọn kọgbọn rẹ\nLabe esemi.\n47 IDAPO AWỌN ENIA MIMO. 8.7. D.\nOKAN pẹlu ọkàn dapo,\nSimi ninu Oluwa,\nJe ki ife nyin gbigbona,\nRan sipa Olugbala;\nOnje ori, awa l'eya,\nOn n'imole, an'iran,\nOșeBaba, awa l'ará\nOn ni ti wa, an'ti rè.\n2 Ninu enyin eyaKristi\nJe ki ife s'õtito,\nKokan lẽ kú fenikeji,\nBi Oluwa si ti ku;\nBệ ni Jesu ti fe awa,\nBệ ni oti teje rè,\nRo 'kànu rè b'oti po to,\nB'ako ba wà ni ife."
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"number": 45,
|
| 259 |
+
"title": "ORIN 48.",
|
| 260 |
+
"text": "45\nORIN 48.\n3 Jesu iwo topalase,\nKamãfe 'nikeji wa,\nFi Emi re kun emi wa,\nGba imele lowo wa;\nK'ife owó iná kotàn,\nInaninu ina rẹ ;\nBehe l'aiye yiomò pe,\nAwa nṣọmọ ẹhin rẹ.\n48 AWỌN TONGBẸ NGBẸ. с.м.\nENYIN t'ongbẹ ngbe, ewámu\nOmi ayè t'oșan,\nNinu orison ti Jesu\nLaisanwo l'awa gba(a).\n2 Wõ, b'oti pe to t'enyin mmu\nNinukangaeke,\nT'ená agbara at'ogún\nNinu nkan, t'osegbe.\n3 Jesu wi pe, isura mi\nKo l'opin titi lai,\nFun awọn ti ofeti si (i),\nYio filera lailai."
|
| 261 |
+
},
|
| 262 |
+
{
|
| 263 |
+
"number": 46,
|
| 264 |
+
"title": "ORIN 49.",
|
| 265 |
+
"text": "46\nORIN 49.\n4 Majemu t'emi ti enyin,\nYioduro titi,\nIretinipa ileri\nTi anu, ko l'opin.\n49 AILERA OKAN. 8.7.\nJESUmáje ki npe lehin,\nWá agutan re t'onu,\nTiti iwo gba nikehin\nEmi, t'osote si 'ọ.\n2 Opọlọpọ anu lemi\nTi gba lojo aiyemi,\nSugbon fun itiju t'emi\nMo ti nná wọn laikasi.\n3 Lora s'ore, yaras'ibi\nL'ọkàn buburu mi nșe,\nEşu tan mi sinu ibi,\nMosijowo ara mi.\n4 Jesu máje ki npe lehin,\nWá mi bi ti atijo,\nFa mi lowo șinu isin,\nTi koje ki nyapa mo."
|
| 266 |
+
},
|
| 267 |
+
{
|
| 268 |
+
"number": 47,
|
| 269 |
+
"title": "ORIN 50.",
|
| 270 |
+
"text": "47\nORIN 50."
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"number": 50,
|
| 274 |
+
"title": "JESU ATI TALAKA NIPATEMI. C.м.",
|
| 275 |
+
"text": "50 JESU ATI TALAKA NIPATEMI. C.м.\nOLUGBALA t'aiyé ogbe\nOju re soke ga,\nOn yin Baba torun t'aiyé\nT'ogbe talakaga.\n2 T'ofi õtito rẹ han fun\nAwọn t'ojewo pe,\nAlaimò, at'olokunkun\nNi nwọn nwà ni aiye.\n3 Teru wiwo wọ wọn lọrọn,\nTi nwọn lãlã laiyé,\nTi ko l'agbara fun 'ra won,\nTi nwọn l'ajigbese.\n4 Ti nwọn jewọ ẹse wọn pọ,\nTi nwon ni : \"Sanu fun\nAwa, t'oyipada si 'o,\nK'amá pa awa run."
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"number": 48,
|
| 279 |
+
"title": "ORIN 51, 52.",
|
| 280 |
+
"text": "48\nORIN 51, 52."
|
| 281 |
+
},
|
| 282 |
+
{
|
| 283 |
+
"number": 51,
|
| 284 |
+
"title": "AFERI OLORUN.",
|
| 285 |
+
"text": "51 AFERI OLORUN.\nCM\nBABA alanu t'ofe wa;\nMo gbokàn mi si ọ,\nApa re, t'opo, l'ogba wa,\nAwa nkorin si 'ọ.\n2 Ti re papa l'awa fé șe,\nGbọkàn wa ni ębó,\nOdawa, osi tunwabi,\nAf'arawa fun 'ọ.\n3 Emi Mimò wá sọdọ mi,\nFife Oluwa han,\n. Fun mi,ki emi k'ole rin\nN'ife Oluwa nã.\n52 BI AIYE WA TI KURU TO.\nODUN nyipo, onji ëmi,\nT'oti fi fun wa ri,\nOhun t'aso, ohunt'awi,\n1 S'isa oku l'anrin.\n49 F\nORIN 53.\n2 Yi ile ka l'ewu duro,\nK'ole tì wa s'isa,\nAt arun buru l'oduro,\nS'ile l'on mu wa sa.\n3 Ayo tab' egbe ailopin,\nDuro de emi wa,\nLai kiye s'ara l'awa nrin\nLeti bębẽ (i)ku wa.\n4 Oluwaji wa l'õrun wa,\nK'ari'na ewu yi,\nNigba t'abape okàn wa,\nK'abao gbe titi."
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"number": 53,
|
| 289 |
+
"title": "JESU L'ONISEGUN. 8.7.",
|
| 290 |
+
"text": "53 JESU L'ONISEGUN. 8.7.\nGEGE bi Mose ti gbejo\nSoke ti bujejo tan,\nBehe l'am' ara Jesu so\nS'igi fun elese nã.\n2 Egbó ipè rè iyonu:\nIlaja on iyè ni\nEmi ti se, emi obun\nSi elese, ti nwo mi."
|
| 291 |
+
},
|
| 292 |
+
{
|
| 293 |
+
"number": 50,
|
| 294 |
+
"title": "ORIN 54.",
|
| 295 |
+
"text": "50\nORIN 54.\n3 Ã itiju, ayò 'yanu !\nSoke aru okàn wa,\nOn ti ba le s'okàn wa nu,\nSugbon n'ifẹ l'ogbawa.\n4 Olugbala awa sin 'o,\nAwabọwọ fun iwọ,\nFa okàn eleșe si o,\nFun wa l'oju igbagbo.\n54 IGBA ELESEẼ SODO. 8.7.\nJESUngba elese sodo\nGbọ òrọ itunu yi ;\nEnyin t'eti nyapa kuro\nL'ona mimo tofisi.\n2 Jesu gba elese sodo,\nTi ko ye fun anu rẹ,\nSugbon owi, kamá beru,\nIru bi awa l'On fẹ.\n3 Jesu gha elese sodo,\nOna anu re l'ași,\nNigbati agutankannu,\nOluso rè wa (a) kiri."
|
| 296 |
+
},
|
| 297 |
+
{
|
| 298 |
+
"number": 51,
|
| 299 |
+
"title": "ORIN 55.",
|
| 300 |
+
"text": "51\nORIN 55.\n4 Kiki awọnti ko lése\nBi ti awon Farisi,\nKoni ipin ninu eje,\nT'oti ta, fun awa, ri.\n5 Sugbon awọntinkerora,\nTinkanu işinawọn,\nJesu gba iru wọn sọdo,\nOsi f'igbagbo fun wọn.\n6 Emina niJesu tigba,\nK'emi fi ogo rè han,\nK'emi rohin anu rè nla\nFuneleșe enia.\n55 IRIN NI IMOLE.\nС.м.\nRIN ni imolẹ 'wọ ori\nIdapo ifęna,\nTi Emi mimò lẽfun ni,\nTowan'imolenã.\n2 Rin ni imole 'wo ori\nOkunkun koja lọ,\nBi 'mọlẹ tiran sinu rè,\nF'osan t'opé ninu."
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"number": 52,
|
| 304 |
+
"title": "ORIN 56.",
|
| 305 |
+
"text": "52\nORIN 56.\n3 Rin ni imole 'wo ori\n(i)Pa ogan re, roròn,\nB'Olorun ti ngbe ọkàn rẹ\nN'imolę ni orun."
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
"number": 56,
|
| 309 |
+
"title": "IYIN. 7s.",
|
| 310 |
+
"text": "56 IYIN. 7s.\n،\nGB' OHUN ga f'ope korin\nIyin si Olorun nyin,\nWo ibukun ti po to,\nAnu re kolopin mò.\n2 Je k'on se Oluwa re,\nBaba ti kos' iru rè,\nTi Oluwa aiye yi\nYio họwọ fun niyin.\n3 Gb'ohun ga, f'ope korin\nIyin fun Olorun nyin,\nWo ibukun ti po to,\nAnu rekolopinmọ.\n53 F2\nORIN 57.\n57 IBUKUN ENIA OLORUN.\nL.M.\nIBUKUN f'omo ti po to,\nTi Baba mu sare ije.\nT' af' imole Orọ nã tó,\nToyò ninu orun t'ope.\n2 Ni èru, ni ayò l'ogbó,\nBi Baba l'ogbọn fi koni,\nNi aiya rè l'osun l'oru,\nNi ifẹ rẹ l'on rinlosan.\n3 Ōtoni ayò rẹ laiye\nNi 'banuję pẹlu èru,\nAgbelebu l'oru laiye\nLafonifoji ti ękun.\n4 Ipamora pelu ife\nM'akoko, t'okoro dīdun,\nIreti lat'oke rè wá\nMu iji nladakę roro.\n5 Idanwo nimba a lõto\nIbanuję l'ode, ninu,\nAt' ọkàn pọn rere ękun\nIdibaje ese ninu."
|
| 311 |
+
},
|
| 312 |
+
{
|
| 313 |
+
"number": 54,
|
| 314 |
+
"title": "ORIN 58.",
|
| 315 |
+
"text": "54\nORIN 58.\n6 Akisa rè t'igbakan ri303\nL'ajonu ni ina orun,\nEwu ni, t'afi bora rè,\nEjẹ rẹ l'ati fi fọ fun.\n58 OLUFOKANSIN OKU. С.м.\nGuọ kini ohun torun wi\nTokú 'lufokànsin\nOruko wọn ndunni 'ranti\nDidun ni orun wọn.\n2 Ninu Jesu ni nwọn ti ku,\nNwọn wọnu ayò rẹ,\nT'iyà, t'ese l'agbawọn 'nu\nPelu gbogbo ege.\n3 Jina si lala on ija\nPelu Oluwa wọn,\nIse wọn laiye on lala\nParil'ere nlawọn."
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"number": 55,
|
| 319 |
+
"title": "ORIN 59, 60.",
|
| 320 |
+
"text": "55\nORIN 59, 60."
|
| 321 |
+
},
|
| 322 |
+
{
|
| 323 |
+
"number": 59,
|
| 324 |
+
"title": "OLORUN L'ABO ATI ITUNU.",
|
| 325 |
+
"text": "59 OLORUN L'ABO ATI ITUNU.\nL.M.\nOLORUN l'abo enia rè,\nNigbawahala on ise,\nKato mura fun ibębe,\nWo ! iranlowo rẹ ti de.\n2 Işan'mimbe, toșan jeje\nTobu s'ilu Olorunwa,\nIfẹ, iyè, on ayò rè\nL'obomirin ibugbe wa.\n3 Şişan mimo na, òrọ rè\nDa iji eru wa duro,\nIleri rè m'okàn bale,\nOsi f'ipa f'are okàn.\n60 ILE AYO. P.M.\nILẸ ayọ kan wà,\nTi ojina,\nIle ayo, t'enia\nDan, dan bosan"
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"number": 56,
|
| 329 |
+
"title": "ORIN 60.",
|
| 330 |
+
"text": "56\nORIN 60.\nGbọ, nwọn nkorin didun :\nOlugbalawa l'oye,\nK'awa rohin iyin rẹ;\nYin, yin, lailai.\n2 Wá s'ile ayò yi,\nWá,wá, kaló,\nEşeniyemeji!\nEşebẹhệ!\nAyò l'awa ori,\nNigba t'alai lese ri\nOlugbala, t'ofun ni ;\nBukun lailai.\n3 Ilẹ ayò nã dan,\nDanju gbogbo,\nB'abapa (i)fe wa mọ,\nK'omá kú mọ.\nNjệ f'ayò kesure\nSile Oba t'on t'ade,\nT'oran j'orun lọ loké,\nTaojoba lai."
|
| 331 |
+
},
|
| 332 |
+
{
|
| 333 |
+
"number": 57,
|
| 334 |
+
"title": "ORIN 61.",
|
| 335 |
+
"text": "57\nORIN 61.\n61 ILU AYO.\nJERUSALEM ib'ayò mi,\nToșe owọn fun mi,\nN'gba wõ n'ise mi operi\nL'ayo, l'alafia?\n2 N'gbawò l'emi ori odi,\nT'on t'ilekun perl re?\nKūku rẹ lé fun igbala,\nIta wura didan?\n3 N'gbawõ, ilu Olorun mi\nL'emi od'afin re?\nNibi ti ijọ kĩ tuka,\nNib' ayò lailopin.\n4 Eșe t'emi okò iyà ?\nIponju t'on t'iku ?\nMo wo ile re Kanan nã\nIle oba aipin.\n5 Apostili, Martir, Wolĩ\nNyi Olugbala ka,\nOre mi ti Kristi laiye\nDapọmọ ijọ nã."
|
| 336 |
+
},
|
| 337 |
+
{
|
| 338 |
+
"number": 58,
|
| 339 |
+
"title": "ORIN 62.",
|
| 340 |
+
"text": "58\nORIN 62.\n6 Jerusalem ib' ayò mi,\nOkàn mi nfa si 'o,\nSã timo ba ri ayò nã,\nIsé mi opari.\n62 ITE ANU OLUWA. С.м.\nMo wá si ite alanu,\nJesu gb'ebe nibẹ,\nMo f'okàn rele teba fun (u),\nMofi ọkàn sibẹ.\n2 Kiki ileri re mo di,\nBệ l'emi gbidanwo\nWá sodo rẹ, t'ope eni\nTièru rèwiwo.\n3 S'apatami ati asa,\nK'emi ri abo rẹ,\nKi nkojuja s'olufisun,\nNitori iku re.\n4 Ife t'oyanu, t'oteje,\nT'oru agbelebu,\nK'elese b'iru emi rę,\nN'ireti ni iku."
|
| 341 |
+
},
|
| 342 |
+
{
|
| 343 |
+
"number": 59,
|
| 344 |
+
"title": "ORIN 63.",
|
| 345 |
+
"text": "59\nORIN 63.\n63 JEWỌ AILERA.\nL.M.\nNIBI gbogbo k'opẹlu mi,\nOluwa ko mi n'ife re,\nTó mi ni iro, l'òrọ mi,\nSi to mi lọna tõro rẹ.\n2 Ma' jè ki nșe onirera,\nKimmá gbękę le arami,\nMo ni kiki ailera\nGbogbo agbarani ti re.\n3 Kun mi pelu ife re po,\nPami mo labe iye re,\nAgba lese, ewe logbon\nL'emi, b'iwọ kò ba mi ré.\n4 Wo mi l'oruko Jesu mi,\nGbami nitori iyà rè,\nIwo Jesu Alagbawi\nSipe fun mi n'ife nla re."
|
| 346 |
+
},
|
| 347 |
+
{
|
| 348 |
+
"number": 60,
|
| 349 |
+
"title": "ORIN 64.",
|
| 350 |
+
"text": "60\nORIN 64.\n64 OLUPAMO ATI OLUFUNNI.\nс.м.\nSro Oluwa mo korin\nPelu okàn didun,\nEyi ti mo mò niti rẹ,\nMofi han fun aiyé.\n2 Iwo n'ison ore ofe,\nT'osanfun wa titi ;\nLouro, l'osan, ati l'ale,\nAwamu ninu rè.\n3 Ki l'awa se, kil'awa ni,\nNi gbogbo aiye wa?\nTi iwo ko ti fi fun ni,\nIwo Oba Baba ?\n4 Tani tę oju orun lọ,\nLori wa lokega?\nT'al'of'ojo at orunfun\nÖko atipapa ?\n5 Tal'ogba wanigb' otutu,\nAti nigba erun?\nN'iji ati l'efu ufu,\nT'osi fi onje kun?\n61 G\nORIN 65.\n6 Oluwa mi lowo ti re\nNi gbogbo rè ti wá,\nIwọ nṣọ gbogbo eda re,\nLailaniyan l'awa?\n65 OYO. (1.4.8.)\nELESE 'rapada\nOnde t'Oluwa ghọ !\nDuro, On yio wá\nGege bi a'ti gbó :\nVò n'ireti, yò pẹlu mi,\nLese gbogbo l'aodasi.\n2 On l'agbeke wa le,\nOn l'awa jewo fun,\nOdodo l'on se,\nLati wę awa nu :\nNinu aișododo wa po,\nKale ri On, t'oșe mimó.\n3 Òro rè l'oduro,\nKòle și nidi rè,\nLọkàn l'aosi mó,\nAopé n'ife rè :"
|
| 351 |
+
},
|
| 352 |
+
{
|
| 353 |
+
"number": 62,
|
| 354 |
+
"title": "ORIN 66.",
|
| 355 |
+
"text": "62\nORIN 66.\nVò n'ireti, yò pẹlu mi!\nLese gbogbo l'aoda si."
|
| 356 |
+
},
|
| 357 |
+
{
|
| 358 |
+
"number": 66,
|
| 359 |
+
"title": "OLORUN PELU WA. C.M.",
|
| 360 |
+
"text": "66 OLORUN PELU WA. C.M.\nFORE ofę ba awagbe\nJesu Olugbala,\nKi eni arekereke\nK'omá lẽ kolu wa.\n2 Fi òrọ rẹ ba awagbe\nJesu İyebiye,\nK'ari igbala on iye\nLọhun bi nihinyi.\n3 F'ibukun re ba awa gbe\nOluwa olòrò,\nFi ebun bi ti orun rẽ\nFun wa l'opolopo.\n4 Fipamo rẹ ba awa gbe\nIwo Alagbara,\nK'awa kole sa ota tì,\nK'aiye k'omá de wa."
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"number": 63,
|
| 364 |
+
"title": "ORIN 67.",
|
| 365 |
+
"text": "63\nORIN 67.\n5 F'õtito rẹ baawagbe\nOlorunOlori,\nNiponju ni kobawa ré,\nMu wa fi ori ti.\n6 F'alafia ba awagbe\nNigbat'ikubade\nN'işeju na so fun wa pe,\nIgbalayin ti de."
|
| 366 |
+
},
|
| 367 |
+
{
|
| 368 |
+
"number": 67,
|
| 369 |
+
"title": "AFERI IFIHAN OLUWA.",
|
| 370 |
+
"text": "67 AFERI IFIHAN OLUWA.\nC.M.\nOLUWA wa a duro de\nIfihan re t'afe,\nIwo wà lori ite re,\nAwa l'eni ti rẹ\n2 Awọn ẹni ti rewo'ke\nNi 'foju s'iwá re,\nAferi re ni nwọn nfi nke\nFun gbigba wiwá re.\n3 Gbigba kini ? gbigba ninu\nWahala aiye yi,\nGbigba l'ow' eni buburu,\nGbigba l'ow' ese ni."
|
| 371 |
+
},
|
| 372 |
+
{
|
| 373 |
+
"number": 64,
|
| 374 |
+
"title": "ORIN 68.",
|
| 375 |
+
"text": "64\nORIN 68.\n4 Gbigba l'ow' idanwo t'eșu,\nLọwọ ibanuję,\nTi itanje aiye timu\nWá si eni ti rẹ.\n5 Oluwajè k'otetewá\nAwanşaferi re\nItanje aiye yi su wa\nFun (i)fe t'awati re.\n68 IBA OLORUN RIN.\nL.M.\nMo f'igbagbo b'Olorun rin ;\nOpin t'ajo mi l'orun,\norun,\nOgọ ať opa re tu mi\nNu, l'ona t'ola, t'osidun.\n2 Mo nrin l'arinaginjunla,\nNibi ti opọlọpọ nu,\nSugbon on t'os'amonawa\nKoję ki nșina timbanu.\n3 Mo nla 'kekun t'ont'ewuja,\nAiye ať esù kolu mi,\nAgbarare ni mo fi la,\nIgbagbo ni işegun mi.\n65 G2\nORIN 68.\n4 Onje kosi l'aginju na,\nSugbon Oluwa bọ mi to ;\nIre gbogbo l'ati șe tan\nFun mi, ki mmá s'aniyan mọ.\n5 Irẹpọ temi rè didun,\nB'On tile ga, ofę gbọ mi\nLala mi emi lẽ to fun (u)\nOn fi ifẹnu rẹ han mi.\n6 Ipá òrọ rè l'ofun mi,\nNigbati emi fẽ daku,\nLogan ọkàn mi tun soji,\nMo nkorin laișaroye fun (u).\n7 Mo nhãnu òro taiye nso,\nNiti afe ti ko pẹ nih'\nOluto, 'Bojuto n'iwo,\nTi emi nyan lati barin."
|
| 376 |
+
},
|
| 377 |
+
{
|
| 378 |
+
"number": 66,
|
| 379 |
+
"title": "ORIN 69.",
|
| 380 |
+
"text": "66\nORIN 69."
|
| 381 |
+
},
|
| 382 |
+
{
|
| 383 |
+
"number": 69,
|
| 384 |
+
"title": "AFERI ILU ORUN RERE. P.M.",
|
| 385 |
+
"text": "69 AFERI ILU ORUN RERE. P.M.\nO JERUSALEM didara.\nT'agbe bow' f'Olorun mi,\nNigbagbogbo t'agbó nwọn nhọ :\nMimó, mimó, mimó ni;\nEmi ba ti se okan\nNinu ará (i)lu rẹ nã.\n2 L'ago ero kò emi wà\nN'ija ototo nihin?\nNigbagbogbo laiye mi nã,\nN'jiyà bi opo omĩ ;\nTemi wà, t'on t'omije,\nTaiye ba mi ninuje.\n3 Emi ba wõ iwo Jesu,\nOre olufe tokàn,\nL'oke lohun ti aisokun,\nNibi ayo mimó na:\nNibi t'anri oju re\nL'ogo, ni imole rẹ."
|
| 386 |
+
},
|
| 387 |
+
{
|
| 388 |
+
"number": 67,
|
| 389 |
+
"title": "ORIN 69.",
|
| 390 |
+
"text": "67\nORIN 69.\n4 Wá ni anu mumijade\nNi ajeji iwà mi,\nNinu iyàmu mi lọ 'le\nS'ile Aba Baba mi;\nNibi t'omi ayè nșan,\nTomu gbogbo ongbę tan.\n5 Iwo ilu ayanfe ni,\nEmiba l'apa iye,\nEmi batete fo nihin\nS'ibi mimó ayò rẹ.\nTi Oba rè șe orun,\nT'otanmole aipękun.\n6 Sugbon b'oba fę ki npehin\nL'aiye rudurudu yi,\nNibi ti isimi kosi,\n'Koșe kiki iyàni ;\nKi ireti mi k'odi\n'Dakoro n'iponjumi.\n7 Bẹhẹ l'emi kòle daku,\nApamini Jesu mi\nRiru omi po ni okun,\nOkọ rẹ kĩ tilẹ rì ;\n'Poko, 'gbokun lẽ baje,\nOnmộ gba awọnti rẹ."
|
| 391 |
+
},
|
| 392 |
+
{
|
| 393 |
+
"number": 68,
|
| 394 |
+
"title": "ORIN 70.",
|
| 395 |
+
"text": "68\nORIN 70.\n70 IRETI AWON ARA ISRAELI. 8.7.4.\nLori oke ama woran\nWo akete mimó nã,\nIhin rere ama mu wá\nSi Sion nilé ota ;\nOndeofo\nIT\nOba reda o n'ide.\n2 Oru ofọ rẹ ti pe to,\nOre rẹ laișõto ni ?\nAwọnọta rẹ ti ngan'o.\nLaika omijè rę si?\nDekun sofo,\nSion tile s'ayanfe.\n3 Wo orun re la ni ogo,\nObarẹ nșe oré rẹ,\nOta re nsa niwaju re,\nNihin l'ogo ti wọn rè ;\nIgbalanla,\nL'Oba Sioni mu wa."
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"number": 69,
|
| 399 |
+
"title": "ORIN 71.",
|
| 400 |
+
"text": "69\nORIN 71.\n4 Qtaki opon ni loju,\nGbó, ija re se pari,\n'Ogbameji fun itiju,\nOjo 'lafia ti de ;\n'Bukun t'opé\nL'opin gbogbo ija re.\n71 ENYIN PELU FẸ LỌ BỊ? C.M.\nЈонѵі. 67-69.\nNIGBATI opo pada sehin\nAopo niye rè !\nOjo npe, mo gb Oluwa wi\nOfẹkò mi pẹlu?\n2 Ni tọkàn buru bi t'emi,\nBoko ba ba mi șe,\nMo mò pe, emi ofati,\nBi elomĩ ti șe.\n3 Iwo nikan şoșon'ipa,\nOșe Kristi lõto,\nLodo tani emi ola,\nBi mo ba kọ iwọ ?"
|
| 401 |
+
},
|
| 402 |
+
{
|
| 403 |
+
"number": 70,
|
| 404 |
+
"title": "ORIN 72.",
|
| 405 |
+
"text": "70\nORIN 72.\n4 Emi mò dajudaju pe,\nIwo mu iyèwá\nNipa ileri on eje,\nEyi ni to fun wa.\n5 Iranwo t'eniat'angeli,\nKòle gba emi la,\nBé l'emi kò ni ireti\nLehin ore re nlanla.\n6 Kòsi òrọ lẹhin ti re,\nT'om' okan mi balė,\nKòsi ifẹ lẹhin ti rẹ,\nTi ale gbękę le.\n7 Ibere : “O lọ pẹlu bi?”\nIroraki loję!\nSugbon le 'o mo gbękę mi,\nMo wi : \"K'amá ri bệ!\"\n72 ADUA FUN IKUNNILOJU. с.м.\nOHUN kokun t'ife rẹ ni\nNdumi ni nkan taiye,\nBaba! bi atewogba mi,\nGbo ebeyi loke !"
|
| 406 |
+
},
|
| 407 |
+
{
|
| 408 |
+
"number": 71,
|
| 409 |
+
"title": "ORIN 73.",
|
| 410 |
+
"text": "71\nORIN 73.\n2 Fokàn more, tutu fun mi\nKimmákun si nkanmọ,\nF'ebun ore ofe fun mi\nKi m'faiye mi fun 'o.\n3 Atimò pe, ti re l'emi,\nNidun laiye, n'iku,\nAjo mó, boba pelu mi,\nOpin l'oni 'bukun.\n73 SIHA ORUN RERE. P.M.\nSIHAorun rere rè\nK'oma rin n'ife,\nOhunt'eniamimó nfẹ,\nL'ohun l'amu se,\nKîşe laiye,\nIya ropo ayò nih',\nMã f'oju ireti si\nOgo loke.\n2 Siha orun fokàn si\nNi iponju rẹ,\nBaba rẹ kĩ șõto bi ?\nTi nwo ara re?\nKini sẹ ọ ?"
|
| 411 |
+
},
|
| 412 |
+
{
|
| 413 |
+
"number": 72,
|
| 414 |
+
"title": "ORIN 73.",
|
| 415 |
+
"text": "72\nORIN 73.\nLoke ni imolę ni\nB'abawa 'ponju, kòsi,\nYò fun ayò.\n3 Siha orun enia rè,\nBa'o rin laiyé,\nNiireti ogo rè\nEruwọn fuye,\nDapọ mọ wọn!\nJagunbi oti ye fun\nEni t'oșe ajagun;\nOpin l'orun.\n4 Siha orun Jesu lọ\nLarin eganpo,\nỌmọ chin rẹ n'iwo,\nTo ipa rẹ lọ !\nOn jiyà pọ,\nDuro tì Olorun bi\nOn ti kã rẹ ti se ri ;\nMã segun lọ.\n73 H\nORIN 74.\n5 Siha orun nikękin\nIku fa emi,\nHaleluya mo korin\nPapalaiye yi,\nMo ni Jesu,\nGbogbo iyàyio tan\nOmi ayèyio șan\nFun 'o titi.\n74 KILELEYI YIOHA ȘE? 7s.\nЈон. ххі. 21, 22.\nIwo bere f'ore rẹ:\nKileleyi oha șe ?\nB'obafe Oluwa rè\nKristi sọ t'opin rè rẽ:\nOn l'enit'Olorun fe,\nOsin'ifeJesurè.\n2 Máșe bere jueyi,\nJowo yi fun Baba rè,\nB'oba tete pe (e) nihin\nL'ewe, fun isimi rè;\nTabi b'obaduro pe\nSiwiwá oluwarè."
|
| 416 |
+
},
|
| 417 |
+
{
|
| 418 |
+
"number": 74,
|
| 419 |
+
"title": "ORIN 75.",
|
| 420 |
+
"text": "74\nORIN 75.\n3 Olá, égan ilera\nArunomnira, erú,\nKileyi fun iwo rè,\nB'oba wà n'ife Jesu,\nNiha oke okun ni,\nAika bibi omi si.\n4 Sugbon bi aiya lẽja\nSi ibanuje t'aje,\nNigba t'eniwa koja,\nFun wa n'iranlowo re,\nK'ale je iyà tọtọ\nK'ale to o lehin lọ.\n75 IGBEKELE. S.M.\nSa dakę okàn mi,\nOluwa re wàm'bẹ,\nEni t'oti șe ileri,\nYiofemu u sé.\n2 On ti fa 'o lowo,\nOmu 'odéhinyi,\nLa ewu ja lopa o mọ,\nYio șe bẹhẹ si."
|
| 421 |
+
},
|
| 422 |
+
{
|
| 423 |
+
"number": 75,
|
| 424 |
+
"title": "ORIN 76.",
|
| 425 |
+
"text": "75\nORIN 76.\nNigba tiwọ ti bọ\nSinu wahala ri,\nIgbekigbe rẹ kộ On gbọ ?\nT'osimu;o bori.\n4 B'ona ko tile dan\nYio mu 'o de'le,\nSati wahala aiyé tan,\nOsan fun gbogbo rè.\n76 IDANWO. 7.6.\n(NIPA BUNYAN.)\nОтото ni idanwo\nToba awọn ťogbó\nIpe nibi ti orun,\nToyè eran ara.\n2 Nwọnwá,nwọnwá,nwọntunwá\nK'ababo sinu won,\nSãyi tabi lọlọ yi\nKi nwọn ba segunwa."
|
| 426 |
+
},
|
| 427 |
+
{
|
| 428 |
+
"number": 76,
|
| 429 |
+
"title": "ORIN 77.",
|
| 430 |
+
"text": "76\nORIN 77.\n3 K'aba segbe nipawon\nK'aba so awa nu\nJe k'awọn ero mimó\nSora,muragiri.\n77 ILO FUN ELESE. с.м.\nIwo eleseduroje,\nKoto lo nihinyi,\nIwo fe șire ni bebe\nOro, ti kò l'opin?\n2 Mo si tun wi k'iwo duro,\nK'ole gba ìlọ mi\nT'abata iná, k'omá bọ\nSinu re lainani.\n3 B'Olorun gẽ iwọ l'apa,\nT'ole kojujà si(i) ?\nÕberu opa irinnã,\nTofi fọ ọtá ni ?\n4 Iwọ lẽ duro lọjọ nã,\nT'așe dajo aiye?\nMo damoran fun 'o, koba\nOnidajo rẹ ré.\n77 H2\nORIN 78.\n78 ILỌ FUN ELESE. 7s,\nIku amawákankan,\nNigba nã l'aogbesan\nLara olukuluku,\nB'iwa rè gẹ, toti kú.\n2 Ese re yio yio ka,\nNwọnm'esan Oluwawá,\nNigba nãki lodahun,\nBọti sọ ănu rẹ nu ?\n3 B'aiya re tile le to\nBi irin, Olorun mò,\nB'ati mu o ri, iwo\nKò le kojà lailejo.\n4 Sãireti kò tĩ tan,\nAnu Obatile nşan,\nMura, k'iku koto ti\nLékun anu mọ ọ pi."
|
| 431 |
+
},
|
| 432 |
+
{
|
| 433 |
+
"number": 78,
|
| 434 |
+
"title": "ORIN 79.",
|
| 435 |
+
"text": "78\nORIN 79.\n79 JEHOWA L'OLUTO. 8.7.4.\nIwo Jehowanla to mi\nEro la aiye yija,\nIpá n'iwo, aile l'emi,\nF'ipá rẹ nã di mi mu;\nOnje orun!\nBọ mi titi mo je to.\n2 La isọn mimó nã fun mi,\nK'odo ilera k'oşan,\nKowọn t'iná, t'awo sanma,\nTo mi la ajo mija;\nOludasi !\nSe ipá at'abo mi.\n3 Sã ti ngo te bebe Jordan\nMãjo èru mi rehin!\nIwo t'oti segun iku\nSin mi d'oke Kanaan ;\nOriniyin\nNgo fi fun 'o titi lai."
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"number": 79,
|
| 439 |
+
"title": "ORIN 80.",
|
| 440 |
+
"text": "79\nORIN 80."
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"number": 80,
|
| 444 |
+
"title": "OLUWA NSUMO. 8.7.",
|
| 445 |
+
"text": "80 OLUWA NSUMO. 8.7.\nIwo sumo, amò lõtọ\nNibi gbogbo t'agbe wà\nEset'awafe sapamo,\nBiwo sumo t'ofẹ wa?\n2 Iwo sumo, èru leyi\nFun ọkàn ti kò fẹ 'ọ,\nIwo sumo ka ese si\nTawọn, ti ko fe sin 'ọ.\n3 Iwo sumo lati busi\nAwọn ọkàn tọfe 'o,\nOre t'ara, ore t'emi\nOfun wọn lọpọlopo.\n4 Eșe t'awa ofi beru,\nBi Jehowa sumo wa,\nOju rè kò ni iberu\nFun ọkàn ť'Oluwa gba.\n81 EKUN ELESE. 8.7.\nOLUWA má m'oju kuro\nL'odo emi, t'oyile,\nTi nsokun ese aiye mi\nN'ite anu ifę rẹ."
|
| 446 |
+
},
|
| 447 |
+
{
|
| 448 |
+
"number": 80,
|
| 449 |
+
"title": "ORIN 82.",
|
| 450 |
+
"text": "80\nORIN 82.\n2 Má ba m'lo sinu idajo,\nBimo ti ndeșe gege, 1\nNitori mo mo daju pe, 2\nEmi kò wà lailebi.\n3 Iwọ mộ, ki ntojewọ rẹ,\nBimo ti nșe laiye mi,\nAt' iwà isisiyi mi\nGbogbo rẹ niwo kesi.\n4 Emi kòni f' itunwi şe\nEyi, ti mo fẹ tọrọ,\nBi iwọ mò ki nto bere :\nAnu ni lopolopo.\n5 Anu Oluwani mo bẹ,\nAnu l'eyi toye mi,\nAnuOluwa, je ki nri\nAnunipoijebi.\n82 NITI ADUA. 7s.\nMURA ębẹ ọkàn mi,\nJesu fe adua re,\nAdua l'ope 'o si,\nOni : Ongbọ ẹbe re."
|
| 451 |
+
},
|
| 452 |
+
{
|
| 453 |
+
"number": 81,
|
| 454 |
+
"title": "ORIN 82.",
|
| 455 |
+
"text": "81\nORIN 82.\n2 Lodo Oba niwọ mbọ,\nWá ni opọ ẹbẹ rẹ,\nLọfe rè lofi fun 'o,\nGege bi igbagbọ rẹ.\n3 Mo fièru mibere\nGba mi l'èru ese mi,\nTitasile eje re\nGb' ọkàn mi ninu ębi.\n4 Sodo re mo wá, simi,\nGb' aiyami, Oluwa rẽ',\nTof'eje rè je ti re,\nIwo nikanjoba rè.\n5 Sãt'emi nş'ero nihin,\nKifẹ rẹ mọkàn mi le,\nOré atOluso mi\nSin mi d'ona de ilé.\n6 F'ohun hanmi,ti ngo şe\nFun mi lotun ilera,\nNi'gbagbo ki mwà laiyé\nKi nku b'awọn ti rẹ nã."
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"number": 82,
|
| 459 |
+
"title": "ORIN 83.",
|
| 460 |
+
"text": "82\nORIN 83.\n83 AGBO KEKERE. с.м.\nAGBO keke, anpe,'o bẽ,\nEje l'afi ra 'o,\nAgbo kekë, t'aika'o si,\nOlorun rẹ fẹ 'ọ.\n2 Agbo kekë, On pe 'o bẽ,\nAgbo t'akobi, gbọ !\nMá je koju oruko ná\nTi 'ọ, ma' beru mọ.\n3 Agbo kekẽ, bệ ni ori,\nIkunwo enia ni,\nBệ n'ifẹ ti Olorun re\nTi pinu rè, Amin.\n4 Kộ pọ tolola, t'oloro\nTologbọn t'ati pè,1\nOlorun fi awọn joba, J\nToş'otoși laiyé.\n5 Sugbon nikehinyio wá,\nAgbo kĩ gbawę mọ,\nKĩ işe ikunwo laiye,\nKĩ ş'agbo kekẽ mọ."
|
| 461 |
+
},
|
| 462 |
+
{
|
| 463 |
+
"number": 83,
|
| 464 |
+
"title": "ORIN 84.",
|
| 465 |
+
"text": "83\nORIN 84.\n6 Nigba na nwọn owogo rẹ\nLașoişęgun ni,\nIye nwọn pọ, takò lẽ ka,\nTi nwọn sẹ Jubili."
|
| 466 |
+
},
|
| 467 |
+
{
|
| 468 |
+
"number": 84,
|
| 469 |
+
"title": "JESU NI ASA WA. 7.6. D.",
|
| 470 |
+
"text": "84 JESU NI ASA WA. 7.6. D.\nMo f'eșe mi le Jesu\nOdo agutan nã,\nToru wọn t'osi gba wa\nNi n'èru egun na,\nM'fi 'jębi mi le Jesu,\nWe abawọnmi mó\nEje rè iyebiye\nMu gbogbo rè kuro.\n2 Mo f'aini mi le Jesu,\nIkunngbe ninu rè,\nOnm'arunkarunmi tan,\nOn gbọkàn mi n'ife;\nMo f'awę mi le Jesu,\nEru t'on t'aniyan,\nOn gbami ninu wonyi,\nOn gb'ękun mi kikan."
|
| 471 |
+
},
|
| 472 |
+
{
|
| 473 |
+
"number": 84,
|
| 474 |
+
"title": "ORIN 85.",
|
| 475 |
+
"text": "84\nORIN 85.\n3 Mo f'aiya mi le Jesu,\nAiya yi t'onșișé,\nApa rè gbami mora\nSi aiya rè mo tẹ,\nMo fe oruko Jesu,\nImanuel Oluwa,\nB'õrun didun l'afefe,\nOrukọ rè tan ka.\n4 Mo fe șe ge bi Jesu\nF'ife, 'rele, 'rora,\nMo fẹ vàgẹ bi Jesu,\nỌmọ mimó Baba,\nMo fe wa pẹlu Jesu\nLarin awon loke,\nKi mb'eni mimó korin\nL'egbe Angel ire.\n85 OMỌ OGUN KRISTI. S.M.\nОмо ogun Kristi\nDide tihamora,\nF'ipa Olorun s'akoni\nNipa omo rè nã.\n85 I\nORIN 86.\n2 Mura l'agbara rè,\nOlorun ogun l'On,\nEni t'ogbeke ara rè\nLe Jesu, oșegun.\n3 Duro, n'ipá rè nla,\nMagbara gbogbo wọ\nF'ihamora Olorun wa\nMura s'ijat'opo.\n4 Ohun gbogbo pari,\nIwajakoja tan,\nKemò pe, e'ti segun pi,\nE'si ti sepetan.\n86 IMOLE IHINRERE. S.M.\nWo orun t'owuro,\nRin l'ona ogo rè,\nItanşan rè l'aiye jã lọ,\nTiye, timolẹ rè.\n2 Sugbon ihinrere\nTandidaraju ka\nAwọn t'okú nin' ese, yè,\nAfoju lë 'riran."
|
| 476 |
+
},
|
| 477 |
+
{
|
| 478 |
+
"number": 86,
|
| 479 |
+
"title": "ORIN 87.",
|
| 480 |
+
"text": "86\nORIN 87.\n3 Borò rẹ ti pé to,\nIdajọ rẹ s'õto,\nIleri re șinșin duro,\nTagbękę le jojo.\n4 Mo gboro ifẹ rẹ,\nMosi fe gba agbó\nLat' oke wá ran Emi rẹ,\nToto mi lai și mọ.\n5 Kilómmi ni tese\nF'ese 'koko ji mi,\nAiyami, ti ojębi, wę\nNinu gbogbo ëri.\n6 ( Aiyaat' etemi\nOtaniyin re ka,\nGba isin ati orin mi,\nIwo Olugbala !"
|
| 481 |
+
},
|
| 482 |
+
{
|
| 483 |
+
"number": 87,
|
| 484 |
+
"title": "IYIN. L.M.",
|
| 485 |
+
"text": "87 IYIN. L.M.\nGBOGBO t'abe ofurufu\nEleda ni k'ef' iyin fun,\nGbogbo ile t'on t'edewa\nYin'ruko Olurapada."
|
| 486 |
+
},
|
| 487 |
+
{
|
| 488 |
+
"number": 87,
|
| 489 |
+
"title": "ORIN 88.",
|
| 490 |
+
"text": "87\nORIN 88.\n2 Oluwa, anu re laipin,\n`Orọ rẹ l'õto ailopin,\nLat' okun d'okun anyin 'o\nTiti orun la lai wọ mọ."
|
| 491 |
+
},
|
| 492 |
+
{
|
| 493 |
+
"number": 88,
|
| 494 |
+
"title": "ORIN TI MOSE ATI ODO",
|
| 495 |
+
"text": "88 ORIN TI MOSE ATI ODO\nAGUTAN NI. S.M.\nJı korin ti Mõse,\nT'on t'od'agutan ni,\nJi gbogbo ọkàn t'ont'ede,\nYin Olugbala ni.\n2 Yin ifẹ iku rè,\nRo ipá ajinde,\nSọ, b'oti mbębe l'orun re,\nK'elesemá segbe.\nEnyin ero l'ona\n3\nIluSionkorin,\nYò ninu odọ agutan\nOlorun; ni Kristi.\n4 Kò pẹ taogbòrọ ni:\nAlabukun, e wá\nOfere pe wá ló nihin\nSi ile Baba wa."
|
| 496 |
+
},
|
| 497 |
+
{
|
| 498 |
+
"number": 88,
|
| 499 |
+
"title": "ORIN 89.",
|
| 500 |
+
"text": "88\nORIN 89.\n5 Nibẹ l'ahọn ayò\nRo ihin rè lailai,\nK'osi korin didunjulo\nTodo agutan lai.\n89 LONI YI. P.M.\nJESUpe, loniyi\nAsakowá,\nOkàn okunkun ni\nMákiri mo!\n2 Jesu pe, loni yi\nDe'ti lẹlẹ,\nNi ibi mimó yi\nFun Jesu te.\n3 Jesu pe, loni yi\nFun abo sa,\nIji igbesanmbi,\nIparunwá.\n4Emi pe, loni yi:\nJow' ara fun (u),\nMá le (e) lóninu (i)bi\nNigba anu.\n89 12\nORIN 90."
|
| 501 |
+
},
|
| 502 |
+
{
|
| 503 |
+
"number": 90,
|
| 504 |
+
"title": "IYIN. 7s.D.",
|
| 505 |
+
"text": "90 IYIN. 7s.D.\nGB'OHUN nyin ga mã korin\nIyin Oba orun nyin,\nAnu rè nà lọ titi,\nEbun rè nã ko lopin ;\nIsrel yin Eleda re,\nJewo l'ete ayò pe,\nAnu rè nà lọ titi,\nEbun rè nã ko lopin.\n2 Si ilekun ododo,\nFunmi laiye, ki mf'ogo\nFun Oludasi t'emi,\nKi nsin (i) lõto laiye yi,\nGb'ohun nyin ga mã korin\nIyin Oba orun nyin,\nAnu rè nà lọ titi,\nEbun rè nã kò lopin.\n3 Gbani, gba ni Oluwa,\nFiranlowo re fun wa,\nGbe itanşan oju re\nSoke, s'oju enia re;"
|
| 506 |
+
},
|
| 507 |
+
{
|
| 508 |
+
"number": 90,
|
| 509 |
+
"title": "ORIN 91.",
|
| 510 |
+
"text": "90\nORIN 91.\nGbohun nyingamã korin\nIyin Oba Orun nyin,\nAnu rè nà lọ titi,\nEbun rẹ nã kò lopin.\n91 EWU ILORA. L.M.\nMURA elese lati gbọn,\nMáșe pe titi d'ola mọ,\nK'akoko re ko má pa re,\nKojo ale yi koto pin.\n2 Mura eleșe k'opada,\nMáșe pe titi d'ola mọ,\nKi iná rẹ k'omá bapa,\nK'eyi, t'onifi șe, topin.\n3 Mura, ibukun mbe fun 'ọ,\nMá se pẹ titi d'ola mọ,\nKi egan ko má le ba 'o,\nK'ojo ola toberę si."
|
| 511 |
+
},
|
| 512 |
+
{
|
| 513 |
+
"number": 91,
|
| 514 |
+
"title": "ORIN 92, 93.",
|
| 515 |
+
"text": "91\nORIN 92, 93."
|
| 516 |
+
},
|
| 517 |
+
{
|
| 518 |
+
"number": 92,
|
| 519 |
+
"title": "OLORUN WA LAPA TEMI.",
|
| 520 |
+
"text": "92 OLORUN WA LAPA TEMI.\nS.M.\nEMı nikan wa ni\nEru ibanuję ?\nMo nke s'Olorun Obami,\nT'ogbó, osi dake ?\n2 Bi On se Babami,\nYio f'anu rè han,\nL'oko erú l'odami si,\nKi nsimi ni ọkàn.\n3 Nje ngo duro de On\nLaini ibanuję,\nEşe mi po, sugbon koto\nBi anu rẹ ti jẹ."
|
| 521 |
+
},
|
| 522 |
+
{
|
| 523 |
+
"number": 93,
|
| 524 |
+
"title": "JESU L'ABO WA. 7S.D.",
|
| 525 |
+
"text": "93 JESU L'ABO WA. 7S.D.\nJESU abo okàn mi,\nS'apa re ngo fe sala\nSa ti bibi omi mbi,\nTi iji nfę soke ga;"
|
| 526 |
+
},
|
| 527 |
+
{
|
| 528 |
+
"number": 92,
|
| 529 |
+
"title": "ORIN 93.",
|
| 530 |
+
"text": "92\nORIN 93.\nOludasi pami mọ\nTiti iji aiye pin,\nTo mi s'ebute re lọ,\nGb'ọkàn mi la nikehin.\n2 Abo mi emi ko ni,\nAile ọkàn le mọ ọ;\nOje ki mnikan wa bi?\nGba mi k'osi tu mi 'nu,\nIwọ n'iranlọwọ mi,\nEke mi le ipa re,\nDabo b'ori aibo mi\nLabę iye apa re.\n3 Iwo Kristi to fun mi,\nOhun gbogbo ni iwọ,\nNi dakumu mi soji,\nM'enî şubu nde duro.\nOdodo loruko re\nEmi ni aișododo,\nMo kun fun eri ese,\nIwo șe Eni Mimo."
|
| 531 |
+
},
|
| 532 |
+
{
|
| 533 |
+
"number": 93,
|
| 534 |
+
"title": "ORIN 94.",
|
| 535 |
+
"text": "93\nORIN 94.\n94 IJA IGBAGBỌ. S.M.\nNi aiya arámi,\nJa ija igbagbo,\nIhamora õto daju\nL'Olorun mu ọ wọ,\n2 Ni aiya, ará mi,\nMá wo ailera re,\nMáșe wo agbara ota\nOlorun n'ipá rẹ.\n3 Ni aiya, arámi,\nOn ranti isin rẹ\nOro, ise on adua\nOn kò wa rantibi?\n4 Ni aiya, arámi\nQyakun si dede,\nIlẹ Qba, tomó, toga,\nTope, oje ti re.\n5 Ni aiya, ará mi,\nL'olõto d'opin rè,\nKò pẹ mọ, lõto kò pẹ mọ,\nIgba işęgun re."
|
| 536 |
+
},
|
| 537 |
+
{
|
| 538 |
+
"number": 94,
|
| 539 |
+
"title": "ORIN 95.",
|
| 540 |
+
"text": "94\nORIN 95.\n95 IWE OLORUN. 7s.\nIWE mimó ti orun,\nIsura t'emi, t'odun,\nT'owi (i)bi timoti wá,\nTof' iwà mi han papa.\n2 T'oba mwi n'ișina mi,\nT'of' Olugbala hanmi,\nToto m'lese lona nã\nTodębi, tabi gban'la.\n3 Totunu ni işé nla\nNipa Emi anu nã,\nT'of' igbagbo ayè fun\nAwa, k'asegun iku.\n4 Tosọ tayò ti ombọ,\nTebi lojo idajo;\nIwe mimó ti orun,\nIşurat'emi t'odun.\n95"
|
| 541 |
+
},
|
| 542 |
+
{
|
| 543 |
+
"number": 1,
|
| 544 |
+
"title": "ORIN 96.",
|
| 545 |
+
"text": "1\nORIN 96.\n96 IGBEKE LE. 7.6.\nRom. viii. 31-39.\nB'OLORUN ba șe t'emi,\nEmi kò bẹru mọ,\nOf' ọmọ rẹ fun emi\nL'ebo topo jojo.\n2 Ohun bi ti aiye yi\nT'emi kòlẽ şaisi,\nL'ofẹ rè yio fun mi\nLehin ębun Kristi.\n3 Fun Kristi nã ni mo yò,\nT'oșe igbalami,\nAt' ogo ati olá,\nAť iyèailopin.\n4 T'alole debi fun mi ?\nKristi ku, t'osi yè,\nFun idalare t'emi\nJesu tun ji dide.\n5 Ife rè iyebiye\nL'agbarabi iku,\nKini yio hayami\nKuro n'ife re nu ?"
|
| 546 |
+
},
|
| 547 |
+
{
|
| 548 |
+
"number": 96,
|
| 549 |
+
"title": "ORIN 96.",
|
| 550 |
+
"text": "96\nORIN 96.\n6 Wahalatab' iponju,\nTab' inunibini ?\nTab' iyan, tabi ewu,\nTab' ida, tab' aini ?\n7 Bi gbogbo aiye fo lo,\nIwowa lori rè,\nBi gbogbo ękę mi fọ,\nMo ni : Iwọ mbe mbe.\n8 Iku, iyè Angeli,\nAwọn alagbara,\nOke, ogbun bi bệ ni,\nKĩpa mi lokan da.\n9 Eje rè iyebiye\nL'ofi kó mlọwọ rè,\nT'alole tu mijade\nKuro ni ọwọ rè?\n97 K\nORIN 97.\n97\nISE OLOTO. 8.7.\nIFIH. ii. 10.\nŞE olõto titi d'ikú\nNigba ojo aiye re,\nEşù binu, aiye kolu,\nNwọn fẹ gba 'ọ l'ade re.\n2 Se olõto ninu iyà,\nTi ko yè fi şakawe\nAyò, ogo, ati olá,\nTohun, t'ade 'o lade.\n3 Ninu igbagbo solõto,\nMakun si wahala mo,\nDuro ti Eni olõto,\nJesu apata re gbó.\n1\n4 Ninu ife se olõtoriaT\nSi Oluwa ore re,\nSise ife pẹlu õtọ\nSipaenikeji re.\n5 Se olõto ni ireti,\nGbekele Olorun rẹ;\nOn kòjẹ ,ọ rì ni omi\nTi iponju aiyé rẹ."
|
| 551 |
+
},
|
| 552 |
+
{
|
| 553 |
+
"number": 98,
|
| 554 |
+
"title": "ORIN 98.",
|
| 555 |
+
"text": "98\nORIN 98.\n6 Yio mu 'o d'ele lõto\nOn soloto on ifé ;\nOrin titun iwo okó\nNigba t'ade 'o lade.\n98 OGBỌN OLORUN. L.M.\n1KOR. i. 26-31.\nOGBON Olorunkò dabi\nOgbọn tologbọn taiyé yi,\nIran oju re șe õto,\nSi t'enia alaimò.\nB'Olorun gaju taiyelo,\nBẽ'rọnu re ju ti wa lọ.\n2 Awa nfe ohunl'agbara,\nOlorunyan t'ailera,\nAnwo ori t'ade lade,\nOlorun pe alainiye,\nOhun t'oșiere loju wa,\nL'on fi damu ologbon wa."
|
| 556 |
+
},
|
| 557 |
+
{
|
| 558 |
+
"number": 99,
|
| 559 |
+
"title": "ORIN 99.",
|
| 560 |
+
"text": "99\nORIN 99.\n3 Iyanu ju iyanu ni,\nTiwoyan eyi ti kosi,\nSugbon otile s'iwa re,\nPe eyi, ti kò si, k'ombe,\nBi ko se bě, emi na ni\nKòle șe okan ti rẹ ni.\n4 Sefefe, s'ogo, nibo ni?\nT'ore ofe gbogbo rè ni;\nJesu l'ogbon, on ododo,\nIdande, at' işemimó\nN'je, kimmá ma se ogo mo,\nAfi ninu Jesu mimó.\n99 ALABUKUN FUN. 8.7.7.\nALABUKUN fun l'otoși,\nIle Oba ni ti wọn,\nNinu anu l'aobusi\nIle Oba nãfun wọn ;\nOtoși nipa t'emi\nL'awọn, ti Jesu busi."
|
| 561 |
+
},
|
| 562 |
+
{
|
| 563 |
+
"number": 100,
|
| 564 |
+
"title": "ORIN 99.",
|
| 565 |
+
"text": "100\nORIN 99.\n2 Alabukun l'eni 'kanu\nL'ona t'oro laiyé yi,\nLõto aotu wọn ninu,\nIba inuję wọn pin;\nOje'ronupiwada,\nT'aki yio yipada.\n3 Alabukun fun l'eniti\nLọkàn tutu ninu wọn,\nIgbagbo ayò ni nwọn ni,\nT'onjogun aiyéfun wọn ;\nNipa ọkàn tutu ni,\nAle bori aiye yi.\n4 Alabukun fun l'eni ti\nEbi npa, t'ongbẹ ngbẹ wọn\nS'ododo ti JesuKristi,\nLõto l'aofi kun wọn ;\nNibi isoniyè rẹ,\nNibę l'aopa ongbe.\n5 Alabukun fun l'alanu,\nTi nwọn ranti ará wọn,\nL'arun, laini, ni iponju,\nTi nwọn fayò ranti wọn;\nAnu nwọn ogha pelu,\nNigba t'elomĩ sonu.\nDVOCATE\n101\nK2.ELDIIBNRBAURRYG\nORIN 99.\n6 Alabukun fun l'eniti\nL'okàn funfun ninu wọn,\nTi kò fese buru șire,\nT'iwà mimo dun mọ wọn;\nNwọn ori Olorun wọn\nL'orun nibi ayò wọn.\n7 Alabukun fun l'eniti\nN'ife șe onilaja,\nTi nwon f'inu didun fiji\nOta k'ota n'irira;\nB'aba tilękegan wọn,\nOm' Olorun l'anpe won.\n8 Alabukun fun l'eniti\nAnșe inunibini,\nTi nwọn njiya po laiye yi\nF'ododo fun Jesu ni;\nOya t'onisegun po\nLohun, logo ni ayò."
|
| 566 |
+
},
|
| 567 |
+
{
|
| 568 |
+
"number": 102,
|
| 569 |
+
"title": "ORIN 100.",
|
| 570 |
+
"text": "102\nORIN 100.\n100 ΝΚΑΝ ΤONIYE. 7.6.\nFIL. iii. 7-11.\nOrò kan mbe t'opoju\nOrò ti aiyé yi,\nWura kò, fadaka kò\nLọrò, ti mo wĩ ni.\n2 Olákan mbẹ t'opoju\nOláti aiyéyi,\nOyè kò, oruko kò\nL'olá, ti mo wĩ ni.\n3 Ogbọn kanmbe t'opoju\nOgbọn ti aiyéyi,\nT'ologbọn aiyé yi kò\nL'ogbọn, ti mo wĩ ni.\n4 Ogo kan mbe t'opoju\nOgo ti aiyéyi,\nOgo Oba kòle to\nOgo, ti mo wĩ ni.\n5 Oniye nkan ti mo wi,\nOmbe ninu Kristi\nImo re at' ife re\nNgba mi ninu ębi."
|
| 571 |
+
},
|
| 572 |
+
{
|
| 573 |
+
"number": 103,
|
| 574 |
+
"title": "ORIN 101.",
|
| 575 |
+
"text": "103\nORIN 101.\n6 Nigbakan ri ni mo wá\nOrò, olá, ogo,\nOgbon, ododo mi nã,\nTi mo ti fi șogo.\n7 Sugbon bi mo ti wá ri\nJesu iye-biye,\nGbogbo rèni mo kasi\nOfo ati egbe.\n8 Jesu ninu emi ni,\nEmi ninu Jesu\nEyi na ni ayò mi\nLaiye ati n'iku."
|
| 576 |
+
},
|
| 577 |
+
{
|
| 578 |
+
"number": 101,
|
| 579 |
+
"title": "AFERI IWA MIMO. 11.10.P.",
|
| 580 |
+
"text": "101 AFERI IWA MIMO. 11.10.P.\nKOL. i. 9-12.\nEmı iba wà ni ibi imole\nPelu angeli on eniare,\nEmi iba faiye buburu silę,\nKi mkoja ewutan, wá orun rẹ!"
|
| 581 |
+
},
|
| 582 |
+
{
|
| 583 |
+
"number": 104,
|
| 584 |
+
"title": "ORIN 102.",
|
| 585 |
+
"text": "104\nORIN 102.\n2 Mo yin Olorun mi t'ogba mi kuro\nNinu agbara okunkun aiyé,\nSinu ijoba ti ọmọ rẹ ãyo,\nL'onyi mi pada n'ife re topé.\n3 Sugbọn niwọn igba ti mo wàlaiyé,\nEse at' aiye, ateşu tan mi,\nKi nrin bi otiye fun mi ni aiyé\nMo bẹ fi imò ife re fun mi.\n4 Ki emi komá wàlaileso fun'o\nEyi ni mo fe, ki nto lo nihin,\nKi nigbati titan mi yio sumo,\nNgo tanma ere anu re nikehin.\n102 OTO L'ENIA OLORUN. С.М.\nMAL. iii. 16-18.\nOLORUNmbe itunu ni\nFawọn toberu On,\nTi nwọn mọ pe, On ka wọn si,\nB'atile kegan wọn."
|
| 586 |
+
},
|
| 587 |
+
{
|
| 588 |
+
"number": 105,
|
| 589 |
+
"title": "ORIN 102.",
|
| 590 |
+
"text": "105\nORIN 102.\n2 Olorun mbẹ t'ofiye si\nMajemu ti nwọn da,\nTi nwọn ti pinu lati sin\nOn, t'ole gba wọn la.\n3 Olorun mbẹ kó iwe rè\nEyi, t'ofi mọ pe,\nNwọnberu, nwọn nporukọ rẹ,\nTi elomigbagbe.\n4 Olorun awọn ogun wi\nPe, t'emi l'awọn nã\nIşura iyebiye ni\nNwọn fun mi lọjọ nã.\n5 Lọjọ kini ? ani lojo,\nTi On da fun' ra rè,\nTi On șa awọn ti rè jọ ;\nAyò ișura rè.\n6 Nigba nã laokiyesi\nIyatonlanlambe\nLarin awọn ti rẹ, ati\nAwọn t'ogbagbe rè."
|
| 591 |
+
},
|
| 592 |
+
{
|
| 593 |
+
"number": 106,
|
| 594 |
+
"title": "ORIN 103.",
|
| 595 |
+
"text": "106\nORIN 103.\n103 ONDE TANMÃ. S.M.\nSAK. ix. 15.\nENYIN onde tanmã,\nT'ade nide ese\nSala si odi lile nã,\nK'ada nyin si sibę.\n2 Enyin onde tanmã,\nOluwal'odi nyin,\n`Orọ rẹ lao muse tan,\nMura, efori ti.\n3 Enyin onde tanma\nOko erú ese,\nNibi t'ensin, kò su nyin tan\nT'enyin nfi nlora bệ ?\n4 Enyin onde tanma\nGbon şękękękę nu,\nOlorun nyin ra nyinpada,\nOn ni kębọwọ fun.\n5 Enyin onde tanma\nIsin Olorun nyin\nOrora, osi s'omnira,\nOf' iyè lai funni."
|
| 596 |
+
},
|
| 597 |
+
{
|
| 598 |
+
"number": 107,
|
| 599 |
+
"title": "ORIN 104.",
|
| 600 |
+
"text": "107\nORIN 104.\n6 Enyin onde tanma\nOrun rere l'ași,\nEwá, Olorun yio san\nNigbamejifun nyin.\n104 KRISTI NIKAN.\nC.M.\nНЕВ. 10, 4.\nMo dupę fun Olorun mi\nFun ihinrere na,\nToko mi pe, of'ese mi\nS'araọmọ rẹ nã.\n2 Nwọn peran rubo nigbani,\nPe, k'om' ese kuro,\nEje malu, tab' ewure\nKòle m'ese kuro.\n3 Bệ l'awa eniapelu\nKòle gb' enikan la,\nBi awa ti nlese ninu\nTanwà nin' ẹsẽ da."
|
| 601 |
+
},
|
| 602 |
+
{
|
| 603 |
+
"number": 108,
|
| 604 |
+
"title": "ORIN 105.",
|
| 605 |
+
"text": "108\nORIN 105.\n4 On ti kò mò ese kese\nAni Jesu Kristi,\nOn nãf'eșe was'ara rè,\nK'ole ru(u) t'ont'ebi.\n5 Osi fi ododo rè se\nWaloso nimimó,\nK'amá lẽ tiju, kalepé,\nK'am' ododo rè wọ.\n6 Oluwa, anyin o, abe,\nFun wá l'Emimimó\nK'ale wá laiye botiye\nK'arin ni ododo.\n105 BI JESU TI NI IYEBIYE TO. LL.M.\nIRANTI Jesu ni didun\nFun okàn ťofi ayo kun,\nSugbon ibanigbe rè dun\nJ'oyin, ju gbogbonkandidun.\n2 Kos' iró tagbo,t'odunju\nKos' erot'anro, t'afę ju\nKos' òro t'anfo, topo ju\nOmo Olorun mi, Jesu.\n109\nL\nORIN 105.\nBoot\n3 'Reti t'onironupada\nAnu t'awọn, t'ogbadua\nOret'awọntinkiriwa\nEbun t'awọn, t'oti rigba\n4 Jesu l'adunlaibanuję\nOrison iye t'omole,\nOn koja gbogbo ayò rẹ\nAti gbogbo ileri rè.\n5 Kos' ete t'ole foro to,\nKos' òro iwe t'ole ro,\nAf' eni t'ole fe o to,\nBi ifẹ ti rẹ ti po to.\n6 Bi ọkàn wamo ife rè,\nOtitotan imolẹ rệ :\nAiye han iwàasan rè\nSugbon ife tan inárẻ.\n7 Eni toto o wo, fe si,\nEni t'omu, o ngbẹ ngbe (e) si,\nKosi ifekife kosi, () ora\nAfi Jesu t'ati yan ri."
|
| 606 |
+
},
|
| 607 |
+
{
|
| 608 |
+
"number": 110,
|
| 609 |
+
"title": "ORIN 105",
|
| 610 |
+
"text": "110\nORIN 105\n8 Eni ti ife Jesu rò,\n01\nMo eyi ti Jesu fẹ kó,\nIbukun ni f'eni tomó,\nKosi nkan ju Ọmọ Rè lọ.\n9 Jesu Olorun Angeli\nKos' orint'odunju f'eti,\nÕrun re dun, ojafrifri,\nAdun orun fun ọkàn mi.\n10 Nigb'egberun ni mo fe 'o,\nJesu nigbawo 'wọ ombo ?\nT'okun mi laiya fun ayò,\nNibi tiwọ ko kuro mo.\n11 Jesu oré lai fi niwe 001\nAferi ọkàn mi t'opé,\nEkun mi nke pe 'o loke,\nMo wẹ ọ l'ese l'omije.\n12 Orison ti ife anu,\nImole t'otan ka n'ilu\nLe õkun t'omu (i)lewa șu,\nKi ogo rẹ n'ile wa rú."
|
| 611 |
+
},
|
| 612 |
+
{
|
| 613 |
+
"number": 111,
|
| 614 |
+
"title": "ORIN 106.",
|
| 615 |
+
"text": "111\nORIN 106.\n13 K'Olorun orun k'ofi han\nIyin rè l'oke orun tan,\nLaiye bi Jesu mayò nșan,\nBi Baba nfẹ ni l'afetan\n14 Si Baba Jesu pada lọ,\nNjoba titi yio fi bọ,\nAiyami pelu fe fo lọ.\nSodo Jesu mi n'ife pọ.\n15 Je k'ayin, k'asigbadua,\nK'Olorun k'oșanufunwa,\nK'ogbe wa soke lati la,\nK'aba On je alafia."
|
| 616 |
+
},
|
| 617 |
+
{
|
| 618 |
+
"number": 106,
|
| 619 |
+
"title": "IYIN ENIMETA LOKAN. DOX.",
|
| 620 |
+
"text": "106 IYIN ENIMETA LOKAN. DOX.\nIYın ainipekun\nK'afi funBaba,\nIyin ainipękun\nK'afi fun Ọmọ,\nIyin ainipękun\nK'afi funEmi,\nIyin ainipękun\nK'afi fun Metalokan."
|
| 621 |
+
},
|
| 622 |
+
{
|
| 623 |
+
"number": 112,
|
| 624 |
+
"title": "ORIN 106.",
|
| 625 |
+
"text": "112\nORIN 106.\n2 F'iyin ainipekun\nFun ife Baba,\nF'iyin ainipekun\nFun ifẹ Ọmọ,\nF'iyin ainipekun\nFun ifeEmi,\nF'iyin ainipękun\nFun ife Metalokan.\nW. M.WATTS,CROWNCOURT,TEMPLEBAR.\n29"
|
| 626 |
+
}
|
| 627 |
+
]
|
docs/English/Gospel_Hymnbook_UK_hymn1.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f72735f0c8912edb8ef592dc876acb05b6c005f3ab9642f0e5a7967b1e35b7ee
|
| 3 |
+
size 9319942
|
docs/English/hymn2.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2b1ee8df349dcda9b3fd3ec6771aa170c83d67ab46e73f68f79e8fde15d4f95c
|
| 3 |
+
size 571282
|
docs/Yoruba/yoruba_hymns.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:50eec97e06de869c337ec494dd42384054bd7c68c727f213f116a18bfa503e41
|
| 3 |
+
size 2057126
|
embeddings/english_index.faiss/index.faiss
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cb2af1b7aac35a8040275aad417eecc81a3fca21ec133da61ea8cc844b985253
|
| 3 |
+
size 3394605
|
embeddings/english_index.faiss/index.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b3496913ed57785ad8a283980a0b54f1d9395108d93cf5433b74991650eb74bd
|
| 3 |
+
size 799540
|
embeddings/generate_english_embeddings.py
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pdfplumber
|
| 2 |
+
import json
|
| 3 |
+
import os
|
| 4 |
+
import logging
|
| 5 |
+
import re
|
| 6 |
+
import glob
|
| 7 |
+
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
| 8 |
+
from langchain_community.vectorstores import FAISS
|
| 9 |
+
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
| 10 |
+
from dotenv import load_dotenv
|
| 11 |
+
|
| 12 |
+
# Configure logging
|
| 13 |
+
logging.basicConfig(
|
| 14 |
+
level=logging.INFO,
|
| 15 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 16 |
+
handlers=[logging.StreamHandler()]
|
| 17 |
+
)
|
| 18 |
+
logger = logging.getLogger(__name__)
|
| 19 |
+
|
| 20 |
+
load_dotenv()
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def extract_english_hymns():
|
| 24 |
+
folder_path = "docs/English"
|
| 25 |
+
pdf_files = glob.glob(os.path.join(folder_path, "*.pdf"))
|
| 26 |
+
logger.info(f"Found {len(pdf_files)} PDF(s) in {folder_path}")
|
| 27 |
+
|
| 28 |
+
full_text = ""
|
| 29 |
+
for pdf_path in pdf_files:
|
| 30 |
+
logger.info(f"Extracting hymns from {pdf_path}")
|
| 31 |
+
with pdfplumber.open(pdf_path) as pdf:
|
| 32 |
+
for page in pdf.pages:
|
| 33 |
+
width, height = page.width, page.height
|
| 34 |
+
|
| 35 |
+
# Left and right column extraction
|
| 36 |
+
left = page.within_bbox((0, 0, width / 2, height))
|
| 37 |
+
right = page.within_bbox((width / 2, 0, width, height))
|
| 38 |
+
|
| 39 |
+
left_text = left.extract_text() or ""
|
| 40 |
+
right_text = right.extract_text() or ""
|
| 41 |
+
page_text = left_text + "\n" + right_text
|
| 42 |
+
full_text += page_text + "\n"
|
| 43 |
+
|
| 44 |
+
logger.info("Splitting text into hymns using pattern anchors")
|
| 45 |
+
split_pattern = r'(?=\b(?:Tune\s+-|B\.H\.B\.|S\.S\.|R\.S\.|R\.H\.|P\.M\.|\d{1,2}[-\d]+|C\.M\.|L\.M\.)\b)'
|
| 46 |
+
raw_hymns = re.split(split_pattern, full_text)
|
| 47 |
+
|
| 48 |
+
hymns = []
|
| 49 |
+
for hymn in raw_hymns:
|
| 50 |
+
cleaned = hymn.strip()
|
| 51 |
+
if len(cleaned.split()) >= 10:
|
| 52 |
+
hymns.append({"text": cleaned})
|
| 53 |
+
|
| 54 |
+
logger.info(f"Extracted {len(hymns)} English hymns from all PDFs")
|
| 55 |
+
|
| 56 |
+
os.makedirs("data/english", exist_ok=True)
|
| 57 |
+
output_path = "data/english/hymns.json"
|
| 58 |
+
with open(output_path, "w", encoding="utf-8") as f:
|
| 59 |
+
json.dump(hymns, f, ensure_ascii=False, indent=2)
|
| 60 |
+
|
| 61 |
+
return hymns
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def generate_english_embeddings():
|
| 65 |
+
logger.info("Starting English embeddings generation")
|
| 66 |
+
|
| 67 |
+
hymns = extract_english_hymns()
|
| 68 |
+
|
| 69 |
+
logger.info("Splitting hymns into chunks")
|
| 70 |
+
text_splitter = RecursiveCharacterTextSplitter(
|
| 71 |
+
chunk_size=1000,
|
| 72 |
+
chunk_overlap=100
|
| 73 |
+
)
|
| 74 |
+
|
| 75 |
+
documents = []
|
| 76 |
+
for hymn in hymns:
|
| 77 |
+
text = hymn["text"].strip()
|
| 78 |
+
if not text:
|
| 79 |
+
continue
|
| 80 |
+
chunks = text_splitter.split_text(text)
|
| 81 |
+
for i, chunk in enumerate(chunks):
|
| 82 |
+
documents.append({
|
| 83 |
+
"text": chunk,
|
| 84 |
+
"hymn_id": hymns.index(hymn),
|
| 85 |
+
"chunk_id": i
|
| 86 |
+
})
|
| 87 |
+
|
| 88 |
+
logger.info(f"Created {len(documents)} document chunks")
|
| 89 |
+
|
| 90 |
+
if not documents:
|
| 91 |
+
logger.warning("No document chunks created. Embedding will not proceed.")
|
| 92 |
+
return
|
| 93 |
+
|
| 94 |
+
logger.info("Generating embeddings with GoogleGenerativeAIEmbeddings")
|
| 95 |
+
embeddings = GoogleGenerativeAIEmbeddings(
|
| 96 |
+
model="models/text-embedding-004",
|
| 97 |
+
google_api_key=os.getenv("GEMINI_API_KEY")
|
| 98 |
+
)
|
| 99 |
+
|
| 100 |
+
logger.info("Creating FAISS index")
|
| 101 |
+
texts = [doc["text"] for doc in documents]
|
| 102 |
+
metadatas = [{"hymn_id": doc["hymn_id"], "chunk_id": doc["chunk_id"]} for doc in documents]
|
| 103 |
+
vector_store = FAISS.from_texts(texts, embeddings, metadatas=metadatas)
|
| 104 |
+
|
| 105 |
+
output_path = "embeddings/english_index.faiss"
|
| 106 |
+
os.makedirs(os.path.dirname(output_path), exist_ok=True)
|
| 107 |
+
|
| 108 |
+
logger.info(f"Saving FAISS index to {output_path}")
|
| 109 |
+
vector_store.save_local(output_path)
|
| 110 |
+
|
| 111 |
+
logger.info("English embeddings generation completed")
|
| 112 |
+
|
| 113 |
+
|
| 114 |
+
if __name__ == "__main__":
|
| 115 |
+
generate_english_embeddings()
|
embeddings/generate_yoruba_embeddings.py
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import re
|
| 3 |
+
import json
|
| 4 |
+
import logging
|
| 5 |
+
import pdfplumber
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
from langchain_community.vectorstores import FAISS
|
| 8 |
+
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
| 9 |
+
|
| 10 |
+
logging.basicConfig(
|
| 11 |
+
level=logging.INFO,
|
| 12 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 13 |
+
handlers=[logging.StreamHandler()]
|
| 14 |
+
)
|
| 15 |
+
logger = logging.getLogger(__name__)
|
| 16 |
+
|
| 17 |
+
load_dotenv()
|
| 18 |
+
|
| 19 |
+
def extract_yoruba_hymns():
|
| 20 |
+
pdf_path = "docs/Yoruba/yoruba_hymns.pdf"
|
| 21 |
+
logger.info(f"Reading {pdf_path}")
|
| 22 |
+
text = ""
|
| 23 |
+
|
| 24 |
+
with pdfplumber.open(pdf_path) as pdf:
|
| 25 |
+
for page in pdf.pages:
|
| 26 |
+
page_text = page.extract_text() or ""
|
| 27 |
+
text += page_text + "\n"
|
| 28 |
+
|
| 29 |
+
# Normalize spaces
|
| 30 |
+
text = re.sub(r"\r", "", text)
|
| 31 |
+
|
| 32 |
+
# Match real hymn headers only
|
| 33 |
+
# e.g., "1 ORIN OWURO", "3 OJO ISIMI"
|
| 34 |
+
hymn_header_pattern = re.compile(
|
| 35 |
+
r"(?m)^(?P<num>\d{1,3})\s+(?P<title>(ORIN|OJO|OLORUN|OLUWA|IBI|AFERI|NIGBA|JESU|BABA|MO|EMI|EGBE|IGBALA|IYIN|INU|O)\b[^\n]*)"
|
| 36 |
+
)
|
| 37 |
+
|
| 38 |
+
matches = list(hymn_header_pattern.finditer(text))
|
| 39 |
+
hymns = []
|
| 40 |
+
|
| 41 |
+
for i, match in enumerate(matches):
|
| 42 |
+
start = match.start()
|
| 43 |
+
end = matches[i + 1].start() if i + 1 < len(matches) else len(text)
|
| 44 |
+
block = text[start:end].strip()
|
| 45 |
+
|
| 46 |
+
number = int(match.group("num"))
|
| 47 |
+
title = match.group("title").strip()
|
| 48 |
+
|
| 49 |
+
hymns.append({
|
| 50 |
+
"number": number,
|
| 51 |
+
"title": title,
|
| 52 |
+
"text": block
|
| 53 |
+
})
|
| 54 |
+
|
| 55 |
+
os.makedirs("data/yoruba", exist_ok=True)
|
| 56 |
+
with open("data/yoruba/hymns.json", "w", encoding="utf-8") as f:
|
| 57 |
+
json.dump(hymns, f, ensure_ascii=False, indent=2)
|
| 58 |
+
|
| 59 |
+
logger.info(f"Extracted {len(hymns)} Yoruba hymns")
|
| 60 |
+
return hymns
|
| 61 |
+
|
| 62 |
+
def generate_yoruba_embeddings():
|
| 63 |
+
hymns = extract_yoruba_hymns()
|
| 64 |
+
|
| 65 |
+
documents = []
|
| 66 |
+
for hymn_id, hymn in enumerate(hymns):
|
| 67 |
+
documents.append({
|
| 68 |
+
"text": hymn["text"],
|
| 69 |
+
"hymn_id": hymn_id,
|
| 70 |
+
"chunk_id": 0
|
| 71 |
+
})
|
| 72 |
+
|
| 73 |
+
logger.info(f"Embedding {len(documents)} Yoruba hymns")
|
| 74 |
+
embeddings = GoogleGenerativeAIEmbeddings(
|
| 75 |
+
model="models/text-embedding-004",
|
| 76 |
+
google_api_key=os.getenv("GEMINI_API_KEY")
|
| 77 |
+
)
|
| 78 |
+
|
| 79 |
+
texts = [doc["text"] for doc in documents]
|
| 80 |
+
metadatas = [{"hymn_id": doc["hymn_id"], "chunk_id": doc["chunk_id"]} for doc in documents]
|
| 81 |
+
vector_store = FAISS.from_texts(texts, embeddings, metadatas=metadatas)
|
| 82 |
+
|
| 83 |
+
os.makedirs("embeddings", exist_ok=True)
|
| 84 |
+
vector_store.save_local("embeddings/yoruba_index.faiss")
|
| 85 |
+
logger.info("Yoruba FAISS index saved")
|
| 86 |
+
|
| 87 |
+
if __name__ == "__main__":
|
| 88 |
+
generate_yoruba_embeddings()
|
embeddings/yoruba_index.faiss/index.faiss
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f47929656d0c8dca6977c98fefc00ce3a9f57881346c69c1fe5d92692848ee55
|
| 3 |
+
size 384045
|
embeddings/yoruba_index.faiss/index.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a4496b41ba8fd0468eca9524a4b58e9cdf95b16eae46cfa88e33312d38e97784
|
| 3 |
+
size 63436
|
gradio_app.py
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import time
|
| 2 |
+
import gradio as gr
|
| 3 |
+
from retriever.retriever import HymnRetriever
|
| 4 |
+
from llm.generate_response import generate_hymn_response
|
| 5 |
+
import logging
|
| 6 |
+
|
| 7 |
+
# Configure logging
|
| 8 |
+
logging.basicConfig(
|
| 9 |
+
level=logging.INFO,
|
| 10 |
+
format="%(asctime)s - %(levelname)s - %(message)s"
|
| 11 |
+
)
|
| 12 |
+
logger = logging.getLogger(__name__)
|
| 13 |
+
|
| 14 |
+
# Track last search time for debounce
|
| 15 |
+
last_search_time = 0
|
| 16 |
+
DEBOUNCE_DELAY = 1.5 # seconds
|
| 17 |
+
|
| 18 |
+
# Hymn search function with manual debounce
|
| 19 |
+
def search_hymn_gradio(language, query):
|
| 20 |
+
global last_search_time
|
| 21 |
+
now = time.time()
|
| 22 |
+
|
| 23 |
+
# Debounce: only run if enough time has passed
|
| 24 |
+
if now - last_search_time < DEBOUNCE_DELAY:
|
| 25 |
+
return gr.update()
|
| 26 |
+
|
| 27 |
+
last_search_time = now
|
| 28 |
+
|
| 29 |
+
logger.info(f"Language selected: {language}")
|
| 30 |
+
logger.info(f"Hymn search query: {query}")
|
| 31 |
+
|
| 32 |
+
if not query.strip():
|
| 33 |
+
return ""
|
| 34 |
+
|
| 35 |
+
retriever = HymnRetriever()
|
| 36 |
+
retrieved_hymns = retriever.retrieve(query, language.lower())
|
| 37 |
+
|
| 38 |
+
if not retrieved_hymns:
|
| 39 |
+
logger.info(f"No hymns found for query: '{query}' in {language}")
|
| 40 |
+
return f"No matching hymns found in {language}. Try another line."
|
| 41 |
+
|
| 42 |
+
logger.info("Generating response with retrieved hymns")
|
| 43 |
+
return generate_hymn_response(retrieved_hymns, query, language.lower())
|
| 44 |
+
|
| 45 |
+
# Language change: update placeholder + clear boxes
|
| 46 |
+
def on_language_change(language):
|
| 47 |
+
if language == "English":
|
| 48 |
+
placeholder = "Type a line from the hymn e.g All hail the power of Jesus name..."
|
| 49 |
+
else:
|
| 50 |
+
placeholder = "Type a line from the hymn e.g FORE ofę ba awa gbe..."
|
| 51 |
+
|
| 52 |
+
return gr.update(value="", placeholder=placeholder), gr.update(value="")
|
| 53 |
+
|
| 54 |
+
# Clear results
|
| 55 |
+
def clear_results():
|
| 56 |
+
return ""
|
| 57 |
+
|
| 58 |
+
# UI
|
| 59 |
+
with gr.Blocks() as demo:
|
| 60 |
+
gr.Markdown("# 🎶 ChoralMind — Hymn Search")
|
| 61 |
+
gr.Markdown("Find hymns in **English** or **Yoruba** instantly as you type.")
|
| 62 |
+
|
| 63 |
+
with gr.Row():
|
| 64 |
+
with gr.Column(scale=1):
|
| 65 |
+
language = gr.Dropdown(
|
| 66 |
+
choices=["English", "Yoruba"],
|
| 67 |
+
value="English",
|
| 68 |
+
label="Choose Language"
|
| 69 |
+
)
|
| 70 |
+
|
| 71 |
+
query = gr.Textbox(
|
| 72 |
+
placeholder="Type a line from the hymn e.g All hail the power of Jesus name...",
|
| 73 |
+
label="Hymn Line",
|
| 74 |
+
lines=2
|
| 75 |
+
)
|
| 76 |
+
|
| 77 |
+
with gr.Column(scale=2):
|
| 78 |
+
output = gr.Textbox(
|
| 79 |
+
label="Search Result",
|
| 80 |
+
lines=15
|
| 81 |
+
)
|
| 82 |
+
|
| 83 |
+
clear_btn = gr.Button("🗑 Clear Results")
|
| 84 |
+
|
| 85 |
+
# Language change → placeholder update & clear fields
|
| 86 |
+
language.change(
|
| 87 |
+
fn=on_language_change,
|
| 88 |
+
inputs=[language],
|
| 89 |
+
outputs=[query, output]
|
| 90 |
+
)
|
| 91 |
+
|
| 92 |
+
# Instant search with manual debounce
|
| 93 |
+
query.input(
|
| 94 |
+
fn=search_hymn_gradio,
|
| 95 |
+
inputs=[language, query],
|
| 96 |
+
outputs=output
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
# Clear button
|
| 100 |
+
clear_btn.click(
|
| 101 |
+
fn=clear_results,
|
| 102 |
+
outputs=output
|
| 103 |
+
)
|
| 104 |
+
|
| 105 |
+
if __name__ == "__main__":
|
| 106 |
+
port = int(os.environ.get("PORT", 7860))
|
| 107 |
+
demo.launch(server_name="0.0.0.0", server_port=port, pwa=True, favicon_path="assets/icon-192x192.png")
|
llm/generate_response.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import logging
|
| 3 |
+
import google.generativeai as genai
|
| 4 |
+
from dotenv import load_dotenv
|
| 5 |
+
|
| 6 |
+
# Configure logging
|
| 7 |
+
logging.basicConfig(
|
| 8 |
+
level=logging.INFO,
|
| 9 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 10 |
+
handlers=[logging.StreamHandler()]
|
| 11 |
+
)
|
| 12 |
+
logger = logging.getLogger(__name__)
|
| 13 |
+
|
| 14 |
+
load_dotenv()
|
| 15 |
+
|
| 16 |
+
def generate_hymn_response(retrieved_hymns, query, language):
|
| 17 |
+
logger.info(f"Generating response for query: '{query}' in {language}")
|
| 18 |
+
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
|
| 19 |
+
model = genai.GenerativeModel("gemini-1.5-flash")
|
| 20 |
+
|
| 21 |
+
logger.info("Formatting retrieved hymns for Gemini prompt")
|
| 22 |
+
context = "\n\n".join([
|
| 23 |
+
f"Hymn #{h['hymn_id']}\n{h['text']}" for h in retrieved_hymns
|
| 24 |
+
])
|
| 25 |
+
|
| 26 |
+
prompt =f"""
|
| 27 |
+
You are a hymn search assistant. The user asked for a {language.upper()} hymn containing the line: "{query}".
|
| 28 |
+
|
| 29 |
+
Below are hymn excerpts retrieved from a hymnal. Some may contain the full hymn, others may be partial.
|
| 30 |
+
|
| 31 |
+
Your task:
|
| 32 |
+
- Identify the full hymn if possible.
|
| 33 |
+
- Start a new stanza with a new line (blank space between stanzas).
|
| 34 |
+
- Number each stanza sequentially (1., 2., 3., etc.).
|
| 35 |
+
- If the hymn appears fragmented, stitch together all matching chunks.
|
| 36 |
+
- Output ONLY the hymn text.
|
| 37 |
+
- Do NOT include a "Retrieved hymn excerpts" section or any reference to hymn numbers or scores unless it's part of the hymn itself.
|
| 38 |
+
- Preserve original punctuation and wording exactly as in the excerpts.
|
| 39 |
+
|
| 40 |
+
Hymn excerpts:
|
| 41 |
+
{context}
|
| 42 |
+
"""
|
| 43 |
+
|
| 44 |
+
logger.info("Sending prompt to Gemini")
|
| 45 |
+
try:
|
| 46 |
+
response = model.generate_content(prompt)
|
| 47 |
+
logger.info("Response generated successfully")
|
| 48 |
+
return response.text.strip()
|
| 49 |
+
except Exception as e:
|
| 50 |
+
logger.error(f"Error generating response: {e}")
|
| 51 |
+
return "Sorry, something went wrong while generating the hymn response."
|
main.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import logging
|
| 2 |
+
from telegram_bot.bot import main
|
| 3 |
+
|
| 4 |
+
# Configure logging
|
| 5 |
+
logging.basicConfig(
|
| 6 |
+
level=logging.INFO,
|
| 7 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 8 |
+
handlers=[
|
| 9 |
+
logging.StreamHandler()
|
| 10 |
+
]
|
| 11 |
+
)
|
| 12 |
+
logger = logging.getLogger(__name__)
|
| 13 |
+
|
| 14 |
+
if __name__ == "__main__":
|
| 15 |
+
logger.info("Starting main script")
|
| 16 |
+
main()
|
| 17 |
+
logger.info("Main script completed")
|
requirements.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
langchain==0.2.0
|
| 2 |
+
langchain-community==0.2.0
|
| 3 |
+
langchain-google-genai==1.0.8
|
| 4 |
+
faiss-cpu==1.8.0
|
| 5 |
+
PyPDF2==3.0.1
|
| 6 |
+
pdfplumber==0.11.2
|
| 7 |
+
python-telegram-bot==21.4
|
| 8 |
+
python-dotenv==1.0.1
|
| 9 |
+
google-generativeai==0.7.2
|
| 10 |
+
numpy==1.26.4
|
| 11 |
+
gradio
|
retriever/retriever.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import logging
|
| 3 |
+
from langchain_community.vectorstores import FAISS
|
| 4 |
+
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
| 5 |
+
from dotenv import load_dotenv
|
| 6 |
+
|
| 7 |
+
# Configure logging
|
| 8 |
+
logging.basicConfig(
|
| 9 |
+
level=logging.INFO,
|
| 10 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 11 |
+
handlers=[
|
| 12 |
+
logging.StreamHandler()
|
| 13 |
+
]
|
| 14 |
+
)
|
| 15 |
+
logger = logging.getLogger(__name__)
|
| 16 |
+
|
| 17 |
+
load_dotenv()
|
| 18 |
+
|
| 19 |
+
class HymnRetriever:
|
| 20 |
+
def __init__(self):
|
| 21 |
+
logger.info("Initializing HymnRetriever")
|
| 22 |
+
self.embeddings = GoogleGenerativeAIEmbeddings(
|
| 23 |
+
model="models/text-embedding-004",
|
| 24 |
+
google_api_key=os.getenv("GEMINI_API_KEY")
|
| 25 |
+
)
|
| 26 |
+
logger.info("Loading English FAISS index")
|
| 27 |
+
self.english_vector_store = FAISS.load_local(
|
| 28 |
+
"embeddings/english_index.faiss", self.embeddings, allow_dangerous_deserialization=True
|
| 29 |
+
)
|
| 30 |
+
logger.info("Loading Yoruba FAISS index")
|
| 31 |
+
self.yoruba_vector_store = FAISS.load_local(
|
| 32 |
+
"embeddings/yoruba_index.faiss", self.embeddings, allow_dangerous_deserialization=True
|
| 33 |
+
)
|
| 34 |
+
logger.info("HymnRetriever initialized")
|
| 35 |
+
|
| 36 |
+
def retrieve(self, query, language, k=3):
|
| 37 |
+
logger.info(f"Retrieving hymns for query: '{query}' in {language}")
|
| 38 |
+
vector_store = self.english_vector_store if language == "english" else self.yoruba_vector_store
|
| 39 |
+
results = vector_store.similarity_search_with_score(query, k=k)
|
| 40 |
+
|
| 41 |
+
retrieved_hymns = []
|
| 42 |
+
for doc, score in results:
|
| 43 |
+
retrieved_hymns.append({
|
| 44 |
+
"text": doc.page_content,
|
| 45 |
+
"hymn_id": doc.metadata["hymn_id"],
|
| 46 |
+
"chunk_id": doc.metadata["chunk_id"],
|
| 47 |
+
"score": score
|
| 48 |
+
})
|
| 49 |
+
|
| 50 |
+
logger.info(f"Retrieved {len(retrieved_hymns)} hymns")
|
| 51 |
+
return retrieved_hymns
|
telegram_bot/bot.py
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
|
| 2 |
+
from telegram.ext import Application, CommandHandler, MessageHandler, CallbackQueryHandler, ChatMemberHandler, filters, ContextTypes
|
| 3 |
+
from retriever.retriever import HymnRetriever
|
| 4 |
+
from llm.generate_response import generate_hymn_response
|
| 5 |
+
from dotenv import load_dotenv
|
| 6 |
+
import os
|
| 7 |
+
import logging
|
| 8 |
+
|
| 9 |
+
# Configure logging
|
| 10 |
+
logging.basicConfig(
|
| 11 |
+
level=logging.INFO,
|
| 12 |
+
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 13 |
+
handlers=[
|
| 14 |
+
logging.StreamHandler()
|
| 15 |
+
]
|
| 16 |
+
)
|
| 17 |
+
logger = logging.getLogger(__name__)
|
| 18 |
+
|
| 19 |
+
load_dotenv()
|
| 20 |
+
|
| 21 |
+
WELCOME_MESSAGE = (
|
| 22 |
+
"Hello, I'm ChoralMind! 🎶\n"
|
| 23 |
+
"I can help you find hymns in English or Yoruba. "
|
| 24 |
+
"Please choose a language:"
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
async def send_welcome_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 28 |
+
"""Send the welcome message with language selection buttons."""
|
| 29 |
+
logger.info("Sending welcome message with language selection")
|
| 30 |
+
keyboard = [
|
| 31 |
+
[
|
| 32 |
+
InlineKeyboardButton("English", callback_data="english"),
|
| 33 |
+
InlineKeyboardButton("Yoruba", callback_data="yoruba")
|
| 34 |
+
]
|
| 35 |
+
]
|
| 36 |
+
reply_markup = InlineKeyboardMarkup(keyboard)
|
| 37 |
+
await update.effective_chat.send_message(WELCOME_MESSAGE, reply_markup=reply_markup)
|
| 38 |
+
logger.info("Sent welcome message and language selection prompt")
|
| 39 |
+
|
| 40 |
+
async def chat_member(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 41 |
+
"""Handle new chat members to send welcome message when bot is added."""
|
| 42 |
+
my_chat_member = update.my_chat_member
|
| 43 |
+
new_status = my_chat_member.new_chat_member.status
|
| 44 |
+
logger.info(f"Chat member update received. New status: {new_status}")
|
| 45 |
+
|
| 46 |
+
# Trigger when the bot is added to a chat or a private chat is started
|
| 47 |
+
if new_status in ['member', 'administrator']:
|
| 48 |
+
await send_welcome_message(update, context)
|
| 49 |
+
|
| 50 |
+
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 51 |
+
"""Handle /start command to resend welcome message and buttons."""
|
| 52 |
+
logger.info("Received /start command")
|
| 53 |
+
await send_welcome_message(update, context)
|
| 54 |
+
|
| 55 |
+
async def clear(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 56 |
+
"""Clear the user's conversation data."""
|
| 57 |
+
logger.info("Received /clear command")
|
| 58 |
+
context.user_data.clear()
|
| 59 |
+
await update.message.reply_text(
|
| 60 |
+
"Conversation cleared! Click /start or wait for the welcome message to begin again.\n"
|
| 61 |
+
"Note: To manage or forget this chat from my memory, go to the 'Data Controls' section in your settings"
|
| 62 |
+
)
|
| 63 |
+
logger.info("Cleared user data and sent confirmation")
|
| 64 |
+
# Resend welcome message after clearing
|
| 65 |
+
await send_welcome_message(update, context)
|
| 66 |
+
|
| 67 |
+
async def language_choice(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 68 |
+
"""Handle language selection from inline buttons."""
|
| 69 |
+
query = update.callback_query
|
| 70 |
+
await query.answer()
|
| 71 |
+
language = query.data
|
| 72 |
+
context.user_data["language"] = language
|
| 73 |
+
logger.info(f"User selected language: {language}")
|
| 74 |
+
await query.message.reply_text(f"Selected {language.capitalize()}. Enter a line from the hymn to search:")
|
| 75 |
+
logger.info("Prompted user for hymn line")
|
| 76 |
+
|
| 77 |
+
async def search_hymn(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
| 78 |
+
"""Handle hymn search queries."""
|
| 79 |
+
query = update.message.text
|
| 80 |
+
language = context.user_data.get("language", None)
|
| 81 |
+
|
| 82 |
+
logger.info(f"Received hymn search query: '{query}'")
|
| 83 |
+
if not language:
|
| 84 |
+
logger.warning("No language selected for query")
|
| 85 |
+
await update.message.reply_text(
|
| 86 |
+
"Please select a language first. Use /start or wait for the welcome message."
|
| 87 |
+
)
|
| 88 |
+
await send_welcome_message(update, context)
|
| 89 |
+
return
|
| 90 |
+
|
| 91 |
+
logger.info(f"Retrieving hymns for language: {language}")
|
| 92 |
+
retriever = HymnRetriever()
|
| 93 |
+
retrieved_hymns = retriever.retrieve(query, language)
|
| 94 |
+
|
| 95 |
+
if not retrieved_hymns:
|
| 96 |
+
logger.info(f"No hymns found for query: '{query}' in {language}")
|
| 97 |
+
await update.message.reply_text(
|
| 98 |
+
f"No matching hymns found in {language.capitalize()}. Try another line."
|
| 99 |
+
)
|
| 100 |
+
return
|
| 101 |
+
|
| 102 |
+
logger.info("Generating response with retrieved hymns")
|
| 103 |
+
response = generate_hymn_response(retrieved_hymns, query, language)
|
| 104 |
+
await update.message.reply_text(response)
|
| 105 |
+
logger.info("Sent response to user")
|
| 106 |
+
|
| 107 |
+
def main():
|
| 108 |
+
logger.info("Starting Telegram bot")
|
| 109 |
+
application = Application.builder().token(os.getenv("TELEGRAM_BOT_TOKEN")).build()
|
| 110 |
+
|
| 111 |
+
# Command handlers
|
| 112 |
+
application.add_handler(CommandHandler("start", start))
|
| 113 |
+
application.add_handler(CommandHandler("clear", clear))
|
| 114 |
+
|
| 115 |
+
# Chat member handler for new chats
|
| 116 |
+
application.add_handler(ChatMemberHandler(chat_member, ChatMemberHandler.MY_CHAT_MEMBER))
|
| 117 |
+
|
| 118 |
+
# Callback and message handlers
|
| 119 |
+
application.add_handler(CallbackQueryHandler(language_choice))
|
| 120 |
+
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, search_hymn))
|
| 121 |
+
|
| 122 |
+
logger.info("Bot polling started")
|
| 123 |
+
application.run_polling()
|
| 124 |
+
|
| 125 |
+
if __name__ == "__main__":
|
| 126 |
+
main()
|
template.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
def create_project_structure():
|
| 4 |
+
# Define project structure
|
| 5 |
+
folders = [
|
| 6 |
+
"docs",
|
| 7 |
+
"data/english",
|
| 8 |
+
"data/yoruba",
|
| 9 |
+
"embeddings",
|
| 10 |
+
"retriever",
|
| 11 |
+
"llm",
|
| 12 |
+
"telegram_bot"
|
| 13 |
+
]
|
| 14 |
+
files = [
|
| 15 |
+
"main.py",
|
| 16 |
+
"embeddings/generate_english_embeddings.py",
|
| 17 |
+
"embeddings/generate_yoruba_embeddings.py",
|
| 18 |
+
"retriever/retriever.py",
|
| 19 |
+
"llm/generate_response.py",
|
| 20 |
+
"telegram_bot/bot.py",
|
| 21 |
+
"requirements.txt",
|
| 22 |
+
".env"
|
| 23 |
+
]
|
| 24 |
+
|
| 25 |
+
# Create folders
|
| 26 |
+
for folder in folders:
|
| 27 |
+
os.makedirs(folder, exist_ok=True)
|
| 28 |
+
print(f"Created folder: {folder}")
|
| 29 |
+
|
| 30 |
+
# Create empty files
|
| 31 |
+
for file in files:
|
| 32 |
+
with open(file, "w") as f:
|
| 33 |
+
pass
|
| 34 |
+
print(f"Created file: {file}")
|
| 35 |
+
|
| 36 |
+
if __name__ == "__main__":
|
| 37 |
+
create_project_structure()
|