2012-08-11 7 views
5

क्या पाइथन में एक लाइब्रेरी है जो शब्दों (मुख्य रूप से नाम) को अर्पैबेट फोनेटिक ट्रांसक्रिप्शन में परिवर्तित कर सकती है?पायथन अर्पैबेट फोनेटिक ट्रांसक्रिप्शन

barbels -> बी AA1 आरबी AH0 LZ

barbeque -> बी AA1 आरबी IH0 KY UW2

barbequed -> बी AA1 आरबी IH0 KY UW2 डी

BARBEQUEING -> बी AA1 आरबी IH0 KY UW2 IH0 एनजी

बार्बेक्यू -> बी AA1 आरबी IH0 KY UW2 जेड

+0

यह Arpabet नहीं है, लेकिन अगर आप आम तौर पर ध्वनि विश्लेषण के लिए देख रहे हैं, तो आप http://pypi.python.org/pypi/Fuzzy/ – Amber

उत्तर

5

जाओ cmu pronouncing dictionary और फिर आप nltk का उपयोग प्राप्त कर सकते हैं जुड़े
cmudict कोष के साथ nltk का उपयोग करते हुए इस

>>> entries = nltk.corpus.cmudict.entries() 
>>> len(entries) 
127012 
>>> for entry in entries[39943:39951]: 
...  print entry 
... 
('fir', ['F', 'ER1']) 
('fire', ['F', 'AY1', 'ER0']) 
('fire', ['F', 'AY1', 'R']) 
('firearm', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M']) 
('firearm', ['F', 'AY1', 'R', 'AA2', 'R', 'M']) 
('firearms', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M', 'Z']) 
('firearms', ['F', 'AY1', 'R', 'AA2', 'R', 'M', 'Z']) 
('fireball', ['F', 'AY1', 'ER0', 'B', 'AO2', 'L']) 
+1

उपयोगी है पर एक नज़र ले सकता है, लेकिन मैं मुख्य रूप से उन शब्दों का उच्चारण करने की आवश्यकता है जो प्रविष्टियों की सूची में नहीं हैं, कम से कम मुझे उनके ट्रांसक्रिप्शन के साथ अक्षरों की एक सूची मिलती है, ताकि मैं इन अक्षरों को नए शब्दों में उपयोग कर सकूं ... – hmghaly

8

तरह कि शब्दकोश से ही किसी भी शब्द के लिए arpabet ध्वन्यात्मक प्रतिलेखन स्थापित:

arpabet = nltk.corpus.cmudict.dict() 
for word in ('barbels', 'barbeque', 'barbequed', 'barbequeing', 'barbeques'): 
    print(arpabet[word]) 

पैदावार

[['B', 'AA1', 'R', 'B', 'AH0', 'L', 'Z']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'D']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'IH0', 'NG']] 
[['B', 'AA1', 'R', 'B', 'IH0', 'K', 'Y', 'UW2', 'Z']] 

करने के लिए इंस्टा ll अजगर दुभाषिया प्रकार में cmudict कोष:

>>> import nltk 
>>> nltk.download() 
Use GUI to install 
corpora>cmudict 
+1

यह भी उपयोगी है, लेकिन यह ' इस शब्दकोश के बाहर शब्दों के लिए काम नहीं करते हैं, क्या किसी स्ट्रिंग के लिए अर्पबेट खोजने का कोई तरीका है? या स्ट्रिंग को syllabify करने के लिए कम से कम कुछ तरीका और शब्दकोश में अक्षर के लिए देखो? – hmghaly

+0

ऐसी चीज मौजूद हो सकती है, लेकिन मुझे इसके बारे में पता नहीं है। – unutbu

9

क्या आप चाहते हैं नाना प्रकार से "ध्वनि करने के लिए पत्र" या इंजन "स्वनिम के लिए ग्रफीम" कहा जाता है। प्रत्येक पाठ-से-भाषण प्रणाली में से एक सहित, कुछ आसपास हैं।

मैं आम तौर पर गैर-यूएस उच्चारण के साथ सौदा करता हूं, जिसके लिए मैं espeak का उपयोग करता हूं। यह सीधे आर्पेबेट आउटपुट नहीं करता है (जो कि किसी भी तरह से यूएस ध्वनियों तक सीमित है), लेकिन आप इसे अमेरिकी उच्चारण का प्रयास करने के लिए संयोजित कर सकते हैं, और बाद में आईपीए से आर्पेबेट में परिवर्तित कर सकते हैं।

>>> from subprocess import check_output 
>>> print check_output(["espeak", "-q", "--ipa", 
         '-v', 'en-us', 
         'hello world']).decode('utf-8') 
həlˈoʊ wˈɜːld 

आप eSpeak के अपने फोन के प्रतिनिधित्व (यह ascii) के लिए -x बजाय --ipa उपयोग कर सकते हैं:

>>> check_output(["espeak", "-q", "-x", '-v', 'en-us', 'hello world']) 
[email protected]'oU w'3:ld 

arpabet में कनवर्ट कर काफी के रूप में एक चरित्र लुक-अप हालांकि के रूप में सरल नहीं है, उदाहरण के लिए "टीए" को "सीएच" में परिवर्तित किया जाना चाहिए, न कि "टीएच" जो एक लालची रूपांतरण आपको देगा (सिवाय इसके कि, "sweattːp" जैसे विषम मामलों में "sweattːp")।

+0

यह ओपी के सबसे प्रासंगिक उत्तर की तरह दिखता है, लेकिन क्या आप कृपया espeak का उपयोग करने के लिए पाइथन का उपयोग करने के बारे में विस्तार से बता सकते हैं। मैंने 'espeak-1.48.04-source' डाउनलोड किया है, लेकिन इसमें फ़ोल्डरों का एक समूह है, और यह सुनिश्चित नहीं है कि आपके उपरोक्त पायथन कोड को कैसे लागू किया जाए, मुझे लगता है कि यह बहुत समय पहले एक प्रश्न का उत्तर दिया गया है, यदि आप मदद कर सकते हैं तो बहुत सराहना की गई। – KubiK888

+0

@ vrplumber के उत्तर में (कम से कम) इस वोट पर सबसे कम वोट हैं, लेकिन उनकी 'श्रोता' परियोजना एस्पेक आउटपुट से ARPAbet में रूपांतरण को संभालती है। –

3

आप ऐसा करने के लिए मेरे श्रोता परियोजना से एक छोटी उपयोगिता का उपयोग कर सकते हैं। यह कवर (आईपीए उत्पन्न करने के लिए) के तहत eSpeak का उपयोग करता है, तो ARPABet मैपिंग कि, आईपीए से मेल खा सकते उत्पन्न उदाहरण के लिए के सेट का निर्माण करने के लिए एक मानचित्रण CMU शब्दकोश से निकाले उपयोग करता है:

$ listener-arpa 
we are testing 
we 
     W IY 
are 
     ER 
     AA 
testing 
     T EH S T IH NG 

कि सटीक मैचों का उत्पादन सीएमयू शब्दकोश पर लगभग 45% समय (मुझे सीएमयू/विकिपीडिया में दस्तावेज पत्राचार का उपयोग करके लगभग 36% मिल गया) जबकि प्रति शब्द ~ 3 मैचों (औसतन) का उत्पादन करते समय। उस ने कहा, हम 99% समय के बारे में "करीबी मैच" देखते हैं, यानी, जब हम हर बार हाथ से चिह्नित शब्द से मेल नहीं खाते हैं, तो हम आम तौर पर केवल कुछ फोनेम से बंद होते हैं।

$ sudo apt-get install espeak 
$ pip install -e git+https://github.com/mcfletch/listener.git#egg=listener 
संबंधित मुद्दे