zachleigh / pronounce-php
为超过13万个单词创建英语发音字符串。英式单词将使用连字符分隔。
Requires
- phpunit/phpunit: ~4.0
- symfony/console: ~2.0
- symfony/filesystem: ~2.0
- vlucas/phpdotenv: ^2.0
README
- 使用卡内基梅隆大学发音词典(CMUdict)文件将单词转换为发音字符串。目前转换为国际音标(IPA)和易于阅读的拼写近似。
- 英式单词使用连字符分隔。希望很快会有IPA和拼写近似的分隔。 - 输出到控制台、文件或数据库
内容
安装
用法
安装
要求
PHP 5.3.9或更高版本
Linux用户可以在他们的发行版仓库中找到PHP版本。对于其他操作系统,请访问php安装指南获取说明。
composer
有关安装说明,请参阅composer文档。
安装
如果满足要求,您可以通过以下两种方式安装此软件包。
下载
推荐。从这里下载,并运行
composer install
通过composer
composer require zachleigh/pronounce-php
如果您通过composer安装,程序将在vendor/zachleigh/pronounce-php中
用法
##### 通用语法概述
pronounce-php command [argument] [options]
命令
all
将包含arpabet、连字符、IPA和拼写近似字符串的整个CMUdict文件输出到文件或数据库。默认情况下,写入名为'output.txt'的文件。
语法概述
pronounce-php all [options]
选项
--destination [-d]
设置输出目标。默认情况下,输出到名为'output.txt'的文件。如果选择文件(默认),字段将通过空格包围的斜杠(/)分隔。
可用目标:[文件、数据库]
pronounce-php all --destination=database
--fields [-f]
设置要显示的输出字段。字段必须以逗号分隔的列表形式存在。默认启用所有字段。
可用字段:[单词、连字符单词、arpabet、ipa、拼写]
pronounce-php all --fields=word,arpabet,ipa
--file [-o]
如果选择'文件'作为输出目标,则可以使用'file'选项设置要写入的文件名。默认文件名为'output.txt',并写入pronounce-php目录。
pronounce-php all --destination=file --file=my_file.txt
--multiple [-m]
对于CMUdict文件中的某些单词,存在多个发音条目。该文件通过在每个附加条目后附加括号中的数字来处理这些条目。
ACERO AH0 S EH1 R OW0
ACERO(1) AH0 S Y EH1 R OW0
ACERO(2) AH0 TH EH1 R OW0
'multiple'命令设置处理这些多个条目的行为。默认情况下,'multiple'设置为'none',即输出条目与CMUdict文件中显示的条目完全相同。'repeat'输出不带括号或数字的条目。
pronounce-php lookup words_to_lookup --multiple=repeat
--symbol [-s]
设置用于连字符的字符。默认值为连字符(-)。注意:如果写入文件,请记住文件中的项将通过斜杠(/)分隔,因此将连字符分隔符设置为斜杠将使文件的读取变得复杂。
pronounce-php all --symbol=.
示例
基本用法
./pronounce-php all
Lines in file will look like this:
accepting / ac-cept-ing / AE0 K S EH1 P T IH0 NG / æksɛ'ptɪŋ / akse'pting /
使用'fields'选项设置所需输出字段。
./pronounce-php all --fields=word,ipa,spelling
Lines in file will look like this:
accepting / æksɛ'ptɪŋ / akse'pting /
使用'symbol'选项更改分隔连字符单词的符号。
./pronounce-php all --symbol=.
Lines in file will look like this:
accepting / ac.cept.ing / AE0 K S EH1 P T IH0 NG / æksɛ'ptɪŋ / akse'pting /
使用“destination”选项设置输出目标。只能选择一个目标。如果“destination”设置为“file”(默认值),则使用“file”选项指定要写入的文件。
./pronounce-php all --file=all.txt
Successfully wrote to all.txt
如果“destination”设置为“database”,将从.env文件读取数据库凭据,并从config.php读取配置。
./pronouncephp all --destination=database
Successfully wrote to database
hyphenate
将单词或多个单词连字符化。请注意,此功能大部分准确,但可能存在一些错误。如果您发现错误,请报告给我,以便我将单词添加到异常列表中。
语法概述
pronounce-php hyphenate words_to_hyphenate [options]
选项
--destination [-d]
设置输出目标。默认情况下,将表格输出到控制台。如果选择文件,字段将通过空格包围的前斜杠(/)分隔。
可用的目标:[table, string, file, database]
pronounce-php hyphenate words_to_hyphenate --destination=file
--file [-o]
如果选择'文件'作为输出目标,则可以使用'file'选项设置要写入的文件名。默认文件名为'output.txt',并写入pronounce-php目录。
pronounce-php hyphenate words_to_hyphenate --destination=file --file=my_file.txt
--symbol [-s]
设置用于连字符的字符。默认值为连字符(-)。注意:如果写入文件,请记住文件中的项将通过斜杠(/)分隔,因此将连字符分隔符设置为斜杠将使文件的读取变得复杂。
pronounce-php hyphenate words_to_hyphenate --symbol=/
示例
基本用法
./pronounce-php hyphenate hello
+-------+-----------------+
| word | hyphenated_word |
+-------+-----------------+
| hello | hel-lo |
+-------+-----------------+
也可以提供以逗号分隔的单词列表。
./pronounce-php hyphenate basket,curtain,hyphenate
+-----------+-----------------+
| word | hyphenated_word |
+-----------+-----------------+
| basket | bas-ket |
| curtain | cur-tain |
| hyphenate | hy-phen-ate |
+-----------+-----------------+
使用“symbol”选项更改分隔单词的符号。
./pronounce-php hyphenate machine --symbol=.
+---------+-----------------+
| word | hyphenated_word |
+---------+-----------------+
| machine | ma.chine |
+---------+-----------------+
使用“destination”选项设置输出目标。只能选择一个目标。将“destination”设置为“string”将产生字符串而不是表格。
./pronounce-php hyphenate flower,mountain --destination=string
word: flower hyphenated word: flower
word: mountain hyphenated_word: moun-tain
将“destination”设置为“file”将输出写入文件。默认文件为“output.txt”。
./pronounce-php hyphenate cupcakes,headphones --destination=file
Successfully wrote to output.txt
output.txt
cupcakes / cup-cakes /
headphones / head-phones /
如果“destination”设置为“file”,则使用“file”选项指定要写入的文件。
./pronounce-php hyphenate reading,eating,shopping --destination=file --file=hyphen.txt
Successfully wrote to hyphen.txt
hyphen.txt
reading / read-ing /
eating / eat-ing /
shopping / shop-ping /
如果“destination”设置为“database”,将从.env文件读取数据库凭据,并从config.php读取配置。
./pronouncephp hyphenate goodbye --destination=database
Successfully wrote to database
lookup
查找单词并输出Arpabet、IPA和拼写近似发音字符串。查找命令需要一个参数:要查找的单词或单词。
语法概述
pronounce-php lookup words_to_lookup [options]
选项
--destination [-d]
设置输出目标。默认情况下,将表格输出到控制台。如果选择“file”,则字段将通过空格包围的前斜杠(/)分隔。
可用的目标:[table, string, file, database]
pronounce-php lookup words_to_lookup --destination=string
--fields [-f]
设置要显示的输出字段。字段必须以逗号分隔的列表形式存在。默认启用所有字段。
可用的字段:[word, arpabet, ipa, spelling]
pronounce-php lookup words_to_lookup --fields=word,arpabet,ipa,spelling
--file [-o]
如果选择'文件'作为输出目标,则可以使用'file'选项设置要写入的文件名。默认文件名为'output.txt',并写入pronounce-php目录。
pronounce-php lookup words_to_lookup --destination=file --file=my_file.txt
--hyphenate [-y]
如果提供了“hyphenate”标志,则适用字段将被连字符化。目前,只能连字符化“word”字段。
pronounce-php lookup words_to_lookup --hyphenate
--multiple [-m]
对于CMUdict文件中的某些单词,存在多个发音条目。该文件通过在每个附加条目后附加括号中的数字来处理这些条目。
ACERO AH0 S EH1 R OW0
ACERO(1) AH0 S Y EH1 R OW0
ACERO(2) AH0 TH EH1 R OW0
'multiple'命令设置处理这些多个条目的行为。默认情况下,'multiple'设置为'none',即输出条目与CMUdict文件中显示的条目完全相同。'repeat'输出不带括号或数字的条目。
pronounce-php lookup words_to_lookup --multiple=repeat
--symbol [-s]
设置用于连字符的字符。默认值为连字符(-)。注意:如果写入文件,请记住文件中的项将通过斜杠(/)分隔,因此将连字符分隔符设置为斜杠将使文件的读取变得复杂。
pronounce-php lookup words_to_lookup --symbol=_
示例
基本用法
./pronounce-php lookup hello
+-------+--------------+--------+----------+
| word | arpabet | ipa | spelling |
+-------+--------------+--------+----------+
| hello | HH AH0 L OW1 | hʌɫoʊ' | huhloh' |
+-------+--------------+--------+----------+
也可以提供以逗号分隔的单词列表。请注意,单词将以字母顺序返回。
./pronounce-php lookup elephant,zebra,giraffe
+----------+---------------------+----------+------------+
| word | arpabet | ipa | spelling |
+----------+---------------------+----------+------------+
| elephant | EH1 L AH0 F AH0 N T | ɛ'ɫʌfʌnt | e'luhfuhnt |
| giraffe | JH ER0 AE1 F | dʒɝæ'f | jura'f |
| zebra | Z IY1 B R AH0 | zi'brʌ | zee'bruh |
+----------+---------------------+----------+------------+
使用“hyphenate”标志连字符化“word”字段。
./pronounce-php lookup money,coffee,schedule --hyphenate
+-----------+------------------+----------+----------+
| word | arpabet | ipa | spelling |
+-----------+------------------+----------+----------+
| cof-fee | K AA1 F IY0 | kɑ'fi | ko'fee |
| mon-ey | M AH1 N IY0 | mʌ'ni | muh'nee |
| sched-ule | S K EH1 JH UH0 L | skɛ'dʒʊɫ | ske'juul |
+-----------+------------------+----------+----------+
使用“symbol”选项设置用于连字符化的字符。
./pronounce-php lookup monkey,furry --hyphenate --symbol=~
+---------+----------------+--------+-----------+
| word | arpabet | ipa | spelling |
+---------+----------------+--------+-----------+
| fur~ry | F ER1 IY0 | fɝ'i | fur'ee |
| mon~key | M AH1 NG K IY0 | mʌ'ŋki | muh'ngkee |
+---------+----------------+--------+-----------+
使用“fields”选项设置所需的输出字段。字段将按给定顺序显示。
./pronounce-php lookup blue,red,green --fields=word,ipa
+-------+-------+
| word | ipa |
+-------+-------+
| blue | bɫu' |
| green | gri'n |
| red | rɛ'd |
+-------+-------+
使用“destination”选项设置输出目标。只能选择一个目标。
将“destination”设置为“string”将产生字符串而不是表格。
./pronounce-php lookup desk,chair,pencil --destination=string
word: chair arpabet: CH EH1 R ipa: tʃɛ'r spelling: che'r
word: desk arpabet: D EH1 S K ipa: dɛ'sk spelling: de'sk
word: pencil arpabet: P EH1 N S AH0 L ipa: pɛ'nsʌɫ spelling: pe'nsuhl
将“destination”设置为“file”将输出写入文件。默认文件为“output.txt”。
./pronounce-php lookup guitar --destination=file
Successfully wrote to output.txt
output.txt
guitar / G IH0 T AA1 R / gɪtɑ'r / gito'r /
如果“destination”设置为“file”,则使用“file”选项指定要写入的文件。
./pronounce-php lookup night,day,noon --destination=file --file=words.txt
Successfully wrote to words.txt
words.txt
day / D EY1 / deɪ' / dey' /
night / N AY1 T / naɪ't / nahy't /
noon / N UW1 N / nu'n / noo'n /
如果“destination”设置为“database”,将从.env文件读取数据库凭据,并从config.php读取配置。
./pronouncephp lookup goodbye --destination=database
Successfully wrote to database
数据库使用
要求
如果您希望使用此程序获得的信息填充数据库,则必须确保您的数据库满足以下要求
- 表必须有一个自增的“id”列
- 列名必须与预期的字段名称完全匹配。
- 所有命令字段名称:“word”,“hyphenated_word”,“arpabet”,“ipa”,“spelling”
- 连字符化命令字段名称:“word”,“hyphenated_word”
- 查找命令字段名称:“word”,“arpabet”,“ipa”,“spelling”
使用“field”选项设置要插入到数据库中的字段。
设置
首先,将 pronounce-php 根目录中的 .env.example 文件复制到一个名为 .env 的新文件。在文本编辑器中打开 .env 文件,并输入相关的数据库信息。
接下来,在文本编辑器中打开 config.php。在“database”字段中,输入您正在使用的数据库类型。目前,仅支持Mysql(有关其他数据库类型的详细信息,请参阅下文)。如果您愿意,可以在“connections”字段中更改字符集,但默认的“utf8”应该能满足大多数人。这就完成了。文件中的其他信息来自上一步中设置的 .env 文件。
其他数据库类型
数据库连接使用可轻松更换的PHP PDO驱动程序。目前,PDO支持12种数据库类型。有关更多信息,请查看驱动程序列表。如果您希望为这些数据库类型之一创建适配器,必须遵循适配器命名规则。
- Cuprid: CupridDatabase
- FreeTDS / Microsoft SQL Server / Sybase: DblibDatabase
- Firebird: FirebirdDatabase
- IBM DB2: IbmDatabase
- IBM Informix动态服务器: InformixDatabase
- MySQL: MysqlDatabase
- Oracle调用接口: OciDatabase
- ODBC v3 (IBM DB2, unixODBC和win32 ODBC): OdbcDatabase
- PostgreSQL: PgsqlDatabase
- SQLite 3和SQLite 2: SqliteDatabase
- Microsoft SQL Server / SQL Azure: SqlsrvDatabase
- 4d: FourD(对于此类,存在一个类命名规则异常,但尚未经过测试)
适配器类应位于src/Database/Databases/目录下的单独文件中,并必须实现DatabaseInterface接口。如果您创建了新的适配器,请通知我,以便我可以将其包含在主程序中。如果您不知道如何编写新的适配器,请告知我,如果时间允许,我将为您编写。
除了创建适配器之外,您还必须在config.php中的'connections'部分为数据库创建一个新的数组。